数据缺失,如何智能修复?第一名方案源码分享

2019-10-28 16:52:22 浏览数 (1)

我们抽取某一海上风电场实际SCADA数据,并人为地去除其中的部分数据,包括但不限于删去某个时间段的全部数据、某台机组在某段时间的数据、某台机组在某段时间的部分字段信息等等,参赛者需要利用剩余数据对删去的数据进行恢复,最终以恢复的准确度为评价基准。

难点:

  1. 缺失数据几乎全部是整块丢失. 预测的时候几乎除了时间,不能从中得到有价值的特征
  2. 每块数据缺失的长度不一致. 缺少数据如果只是缺少一行,和一下缺少1000行,这样的预测难道肯定是不一样的,得到的结果也会差别很大
  3. 需要预测的有68个特征 每个特征有不同的分布趋势,这样每个列肯定是不同的模型和参数,如果人为的逐一去搜索,工作量可想而知.
  4. 如何构建和在线一致的本地测试集 每个缺失块大小不一,每个列缺失的数据多少不一,如果使用随机Split很难模拟到接近的分布.

AI项目体验地址 https://loveai.tech

求解思路:

  1. 难点1:

大量特征即使跨风机也具有很强相关性, 通过关联不同文件的数据构造特征, 下图就是挑选的有代表性的多列

  1. 难点2: 在模型中设置动态参数,根据缺失数据块的大小来分别构造Train数据,具体参数可以参考下面的模型设计
  2. 难点3: 在模型的设计中,把常见的回归,树模型都作为一个嵌套模型,通过参数控制.自动的寻找最优参数(模型)
  3. 难点4:
  • 建立缺失数据字典,对每一个连续的数据块和缺失块,存储起始地址.
  • 在缺失块对应的数据块,前后都可以找到和缺失块一样大小的块来模拟缺失块,这样隐含参数也基本一致.

方案细节

下面3个模型的训练方法基本一致,就是内部嵌入各种模型,通过参数共享来避免过拟合. 3个模型的区别在于,最优参数的选择方法不一致.

  1. 模型1:

模型2:

模型3:

模型的优缺点:

继续改进的空间:

  • 好几个参数没有展开搜索
  • 只使用了线性回归
  • 只使用了相关性来做特征选择
  • 对大缺失块增加更多资源来训练,增加搜索空间

0 人点赞