平时很多分类问题都会面对样本不均衡的问题,很多算法在这种情况下分类效果都不够理想。类不平衡(class-imbalance)是指在训练分类器中所使用的训练集的类别分布不均。比如说一个二分类问题,1000个训练样本,比较理想的情况是正类、负类样本的数量相差不多;而如果正类样本有995个、负类样本仅5个,就意味着存在类不平衡。把样本数量过少的类别称为“少数类”。
SMOTE算法的思想是合成新的少数类样本,合成的策略是对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。如图所示:
算法流程:
1、对于少数类中每一个样本a,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到其k近邻。
2、根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本a,从其k近邻中随机选择若干个样本,假设选择的近邻为b。
3、对于每一个随机选出的近邻b,分别与原样本a按照如下的公式构建新的样本:c=a+rand(0,1)∗|a−b|