数据缺失,如何智能修复?第一名方案源码分享
程序员文章站
2022-05-09 20:53:08
...
向AI转型的程序员都关注了这个号????????????
机器学习AI算法工程 公众号:datayx
我们抽取某一海上风电场实际SCADA数据,并人为地去除其中的部分数据,包括但不限于删去某个时间段的全部数据、某台机组在某段时间的数据、某台机组在某段时间的部分字段信息等等,参赛者需要利用剩余数据对删去的数据进行恢复,最终以恢复的准确度为评价基准。
难点:
-
缺失数据几乎全部是整块丢失.
预测的时候几乎除了时间,不能从中得到有价值的特征
-
每块数据缺失的长度不一致.
缺少数据如果只是缺少一行,和一下缺少1000行,这样的预测难道肯定是不一样的,得到的结果也会差别很大
-
需要预测的有68个特征
每个特征有不同的分布趋势,这样每个列肯定是不同的模型和参数,如果人为的逐一去搜索,工作量可想而知.
-
如何构建和在线一致的本地测试集
每个缺失块大小不一,每个列缺失的数据多少不一,如果使用随机Split很难模拟到接近的分布.
项目下载地址
关注微信公众号 datayx 然后回复 修复 即可获取。
AI项目体验地址 https://loveai.tech
求解思路:
难点1:
大量特征即使跨风机也具有很强相关性, 通过关联不同文件的数据构造特征, 下图就是挑选的有代表性的多列
-
难点2:
在模型中设置动态参数,根据缺失数据块的大小来分别构造Train数据,具体参数可以参考下面的模型设计
-
难点3:
在模型的设计中,把常见的回归,树模型都作为一个嵌套模型,通过参数控制.自动的寻找最优参数(模型)
难点4:
建立缺失数据字典,对每一个连续的数据块和缺失块,存储起始地址.
在缺失块对应的数据块,前后都可以找到和缺失块一样大小的块来模拟缺失块,这样隐含参数也基本一致.
方案细节
下面3个模型的训练方法基本一致,就是内部嵌入各种模型,通过参数共享来避免过拟合. 3个模型的区别在于,最优参数的选择方法不一致.
模型1:
模型2:
模型3:
模型的优缺点:
继续改进的空间:
好几个参数没有展开搜索
只使用了线性回归
只使用了相关性来做特征选择
-
对大缺失块增加更多资源来训练,增加搜索空间
阅读过本文的人还看了以下:
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
长按图片,识别二维码,点关注
AI项目体验
https://loveai.tech