王老头

导航

【总结】机器学习(深度学习)中数据问题的处理方法

1.非均衡数据集的处理方法    参考链接:https://www.zhihu.com/question/30492527

i) 推荐看一下Haibo He, Edwardo A. Garcia的Learning from Imbalanced Data(据说这篇论文对非均衡数据很赞)这篇paper,写的很系统也很清晰。主要包括四大类方法,1.Sampling 2.Cost Sensitive Methods 3.Kernal-Based Methods and Active Learning Methods 4.One-Class Learning or Novelty Detection Methods。

Sampling大类说到底就是两种可能。第一种是把多的那个组变少,第二种是把少的那个组变多,以达到平衡的结果。一般比较少用第一种,因为那样容易丢失重要信息。对于第二种,又有很多方法,最简单的是oversampling,由于其局限性,又有很多根据已有的数据生成新数据的方法,比如各种变体的synthetic sampling。
第二种思路是基于把多数组猜成少数组和把少数组猜成多数组的cost是不同的这个事实,来修正数据分布(个人理解可以当成采到样的概率)的方法。
另外,kernal类的模型,还可以通过修改核函数来偏移hyperplane,来抵消不平衡数据造成的hyperplane的偏移。
最后一大类没有看过相关paper,不了解。。
ii) 在两类比例非常不均衡的情况下,就不能再用「分类正确率」(accuracy)来衡量模型性能,而要用少数类的「准确率」(precision)和「召回率」(recall),或者二者的综合(F1, equal error rate, area under curve 等等)。

在训练时,如果能够把这些评价指标作为目标函数,那是最好的。

如果你的模型只支持用分类正确率作为目标函数,那么可以有下面几种对策:
  1. 调整两类训练样本的权重,使得两类的总权重相等。这是最省事的办法。
  2. 如果你的模型不支持类加权或样本加权,那么可以把少数类的数据复制几份,使得两类数据量基本相同。这与加权重是等效的,但是会浪费空间和时间。
  3. 把少数类的数据复制几份,并适当加噪声。这可以增强模型的鲁棒性。
  4. 加噪声可以拓展到一般的 data augmentation —— 根据已有数据生成新的数据,但保证类别相同。data augmentation 的方法有很多,不同性质的数据,augmentation 的方法也不一样。例如,图像数据可以平移、放缩、旋转、翻转等等。
  5. 如果多数类的数据量太大,也可以从中随机地取一小部分。当然,此方法一般要与上面 1~4 结合使用。
说点个人的理解:其一最好是能通过各种方式(数据增强等)平衡每类的样本数据;其二通过对样本少的类单独加上更大的惩罚系数,让模型训练更偏向于少样本的类。
 

 

posted on 2018-05-10 19:42  王老头  阅读(1410)  评论(0编辑  收藏  举报