之前在训练YoutubeNet和DCN的时候,我都发现平台用户中基础用户的信息数据缺失率特别高,比如性别一栏准确填写的不足60%,所以我一直想调研一下有没有什么更好的填充方法,要保证既不能太复杂太耗时,也要有足够好的效果。
其实这个问题就是一个缺失值填充,之前的文章中也写过很多办法,常规的也总结过:
- 均值、众数填充
最简单的填充,效果也惨不忍睹 - 根据没有缺失的数据线性回归填充
填充的好会造成共线性错误,填充的不好就没价值,很矛盾 - 剔除
丢失信息量 - 设置哑变量
会造成数据分布有偏 - smote
连续值有效,离散值就无法实施了
我在Google上看imbalance问题的时候,偶然看到了这个视频教程,上面讲了图像的缺失处理,提到了伪标签处理的半监督学习方式。我就在国内的论坛上找了下,阿里云技术论坛也同样注意到了这个问题,但是只给出了如下的粗糙的构思图:
有一份整理了的流程图,具体执行步骤总结,和大家一起看一下:
- 将有标签部分数据分为两份:train_set&validation_set,并训练出最优的model1
- 用model1对未知标签数据(test_set)进行预测,给出伪标签结果pseudo-labeled
- 将train_set中抽取一部分做新的validation_set,把剩余部分与pseudo-labeled部分融合作为新的train_set,训练出最优的model2
- 再用model2对未知标签数据(test_set)进行预测,得到最终的final result label
我利用了已知标签的数据对这个方法进行测试,用了最简单的mixed logistic regression模型作为Basic Model,得到结果如下:
利用伪标签半监督的方式,同样的mixed logistic regression模型AUC值会提高0.1pp左右,效果还不错,而且实施并不复杂,大家可以在缺失值处理或者分类问题中应用尝试一下。
欢迎大家关注我的个人bolg,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码疑问都欢迎通过公众号发消息给我。
网友评论