类别不平衡问题(class-imbalance)是什么指分类任务中不同类别的训练样例数目差别很大的情况
若不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有998个反例,但是正例只有2个,那么学习方法只需要返回一个永远将新样本预测为反例的学习器,就能达到99.8%的精度;然而这样的学习器往往没有价值,因为它不能预测出任何正例
上采样(过采样, Oversampling)
定义对训练集中的少数类进行“过采样”,即增加一些少数类样本使得正、反例数目接近,然后再进行学习
Random Oversampling(随机上采样)简单复制样本的策略来增加少数类样本,容易产生模型过拟合的问题
SMOTE即合成少数类过采样技术(Synthetic Minority Oversampling Technique),是基于随机采样算法的一种改进,其基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中
算法流程1.对于少数类中每一个样本
,以欧氏距离为标准计算它到少数类样本集
中所有样本的距离,得到其k近邻
2.根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本
,从其k近邻中随机选择若干个样本,假设选择的近邻为
。
3.对于每一个随机选出的近邻
,分别于原样本按照如下的公式构建新的样本
SMOTE的问题随机选取少数类样本用以合成新样本,而不考虑周边样本的情况1.如果选取的少数类样本周围都是少数类样本,则新合成的样本不会提供太多有用信息。就像SVM中远离margin的点对决策边界影响不大
2.如果选取的少数类样本周围都是多数类样本,这类的样本可能是噪声,则新合成的样本会与周围的多数类样本产生大部分重叠,导致分类困难
Borderline-SMOTE
概述由于原始SMOTE算法的对所有少数类样本都是一视同仁的,我们希望新合成的少数类样本能处于两个类别的边界附近,因为在实际建模过程中那些处于边界位置的样本更容易被错分,因此利用边界位置的样本信息产生新样本可以给模型带来更大的体征,能提供足够的信息用以分类,即Borderline SMOTE算法做的事情
算法流程这个算法会先将所有的少数类样本分成三类,如图
"noise":所有的k近邻个样本都属于多数类,可认为是噪声不能生成合成样本
"danger":超过一半的k近邻样本属于多数类
"safe":超过一半的k近邻样本属于少数类
borderline smote算法只会从处于"danger"状