注:小众样本☞样本量少的一类;大众样本☞样本量多的一类
在学术研究时,很多算法都有一个基本假设,那就是数据分布是均匀的。但是当我们把这些算法直接应用到实际问题当中,大多数情况下都无法取得理想的结果,这是由于实际生活中很难遇到数据分布均匀的情况。
处理数据不均衡通常有以下几种方法:
1、重组数据:
①过采样(oversampling):复制小众样本,使它和大众样本差不多数量。
缺点:数据量大了,训练模型的时间开销多了;并且不能简单地对初始较少类样本进行重复采样,否则会招致严重的过拟合。
②欠采样(undersampling):删除部分大众样本,使它和小众样本数据量一致。
缺点:随机的丢弃大众样本,可能会丢失一些重要的信息。
2、数据合成(比如SMOTE算法):
Step1:首先确定大众样本是小众样本的几倍(K倍),即:小众样本要生成的数量是现在小众样本数量的多少倍
Step2:对于小众样本中的每一个数据,使用欧式距离找到与其最近的K个同类样本(K近邻问题)
Step3:对于每个小众样本与其K近邻的K个小众样本,我们分别计算其“中间”样例作为新的小众样本,计算公式如下:
3、修改算法:
在所有方法中,最具有创造力的方法莫过于修改算法了。若网络中的最后一层使用的是Sigmoid函数,它会有一个预测的门槛,如果低于门槛,预测结果为一类;如果高于门槛,预测结果为另一类。不过现在我们以数据不平衡为训练背景,此时就需要我们调解一下门槛的位置,使得门槛更加偏向于大众样本,这样,只有数据非常准确的情况下,模型才会预测为大众样本。
Eg:我们定义一个网络,想要使用该网络判断给定图片是猫?类还是狗?类。当数据均衡时,我们最后一层可以使用sigmoid激活函数,定义输出值大于0.5时为?,小于等于0.5时为?;当数据不均衡时(假设?图多于?图),我们最后一层可以使用sigmoid激活函数,定义输出大于0.8时为?,小于等于0.8时为?
4、使用其他的机器学习方法:
eg:神经网络对不均衡数据会变得束手无策,但是决策树不会受到不均衡数据的影响。