伪标签半监督学习

之前在训练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,如果有任何算法、代码疑问都欢迎通过公众号发消息给我。

打赏的大佬可以联系我,赠送超赞的算法资料