机器学习中,我们获取的数据往往存在一个问题,就是样本不均匀。比如你有一个样本集合,正例有9900个,负例100个,训练的结果往往是很差的,因为这个模型总趋近于是正例的。

就算全是正那么,也有99%的准确率,看起来挺不错的,但是我们要预测的负样本很可能一个都预测不出来。

这种情况,在机器学习中有三个处理办法,过采样、欠采样、再平衡(再缩放)

 

过采样:增加一些数据数据,使得正反例数量一致,比如这里,我们增加负例9800个,若单纯复制这100个负例,则很可能会导致多重共线性问题,所以实际的处理方法一般根据原始数据进行一些处理。

比如常用的SMOTE算法,通过差值的方法增加样本数量。

 

欠采样:减少一些样本使得正反例数量一致,比如这里减少9800个正例,但这样一来就损失了很多数据资源,实际常用的做法是将多的样本分成很多份,用N个训练器来训练,最后去平均。

比如这里,我们可以将正例分成99份100个的集合,99份分别和100个负例组合成训练集来进行训练。当然如果正负例的数量差距太大的话可能会有很多个训练器了。

 

再平衡:一般的分类算法训练出来是一个0-1的值,一般大于等于0.5的就是正,小于0.5的为负例。再平衡的思想就是根据正负样本数量的比例对训练结果判定的调整。

通用的算法是:>=正例数量/总数量,则为正;<正例数量/总数量为负

在这里我们的判定改为9900/(9900+100)=0.99

所以预测结果当大于等于0.99时候我们判定为是正例。