引言
不管是在学术界还是工业界,不平衡学习已经吸引了越来越多的关注,不平衡数据的场景也出现在互联网应用的方方面面,如搜索引擎的点击预测(点击的网页往往占据很小的比例),电子商务领域的商品推荐(推荐的商品被购买的比例很低),信用卡欺诈检测,网络攻击识别等等。
问题定义
那么什么是不平衡数据呢?顾名思义即我们的数据集样本类别极不均衡,以二分类问题为例,假设我们的数据集是$S$,数据集中的多数类为$S_maj$,少数类为$S_min$,通常情况下把多数类样本的比例为$100:1$,$1000:1$,甚至是$10000:1$这种情况下为不平衡数据,不平衡数据的学习即需要在如此分布不均匀的数据集中学习到有用的信息。
为什么不平衡学习
传统的学习方法以降低总体分类精度为目标,将所有样本一视同仁,同等对待,如下图1所示,造成了分类器在多数类的分类精度较高而在少数类的分类精度很低。机器学习模型都有一个待优化的损失函数,以我们最常用最简单的二元分类器逻辑回归为例,其损失函数如下公式1所示,逻辑回归以优化总体的精度为目标,不同类别的误分类情况产生的误差是相同的,考虑一个$500:1$的数据集,即使把所有样本都预测为多数类其精度也能达到$500/501$之高,很显然这并不是一个很好的学习效果,因此传统的学习算法在不平衡数据集中具有较大的局限性。
不平衡学习的方法
既然传统的学习算法在不平衡数据中具有较大的局限性,那么针对不平衡数据集又有怎样的解决方案呢?
针对不平衡数据,我们往往从数据和算法两个层面来进行处理:
(一)数据层面:又可分为过抽样和欠抽样。
a) 过抽样指的是增加少数类的样本数(可以直接重复已有数据,也可以按照一定规则合 成少数类数据);
b) 欠抽样指的是减少多数类样本的数量,例如,可以将多数类样本分为“噪音样本”,“边界样本”,“安全样本”,我们将“噪音样本”和“边界样本”删除,只保留“安全样本”,这样就减少了多数类样本的数量。
(二)算法层面:
a) 代价敏感:可以给每个训练样本加权或者在算法中引入敏感因子
b) 集成学习方法:即多个分类器,然后利用投票或者组合得到结果。又可以分为同态集成学习方法(同种分类器组合)和异态集成学习方法(多种分类器组合)
c) 单类分类器方法:仅对少数类进行训练,例如运用SVM算法
采样
随机采样
采样算法通过某一种策略改变样本的类别分布,以达到将不平衡分布的样本转化为相对平衡分布的样本的目的,而随机采样是采样算法中最简单也最直观易懂的一种方法。随机采样主要分为两种类型,分别为随机欠采样和随机过采样两种。随机欠采样顾名思义即从多数类$S_maj$中随机选择少量样本$E$再合并原有少数类样本作为新的训练数据集,新数据集为$S_min+E$,随机欠采样有两种类型分别为有放回和无放回两种,无放回欠采样在对多数类某样本被采样后不会再被重复采样,有放回采样则有可能。随机过采样则正好相反,即通过多次有放回随机采样从少数类$S_min$中抽取数据集$E$,采样的数量要大于原有少数类的数量,最终的训练集为$S_maj+E$。
可以看到随机采样通过改变多数类或少数类样本比例以达到修改样本分布的目的,从而让样本分布较为均衡,但是他们也存在一些问题。对于随机欠采样,由于采样的样本要少于原样本集合,因此会造成一些信息缺失,未被采样的样本往往带有很重要的信息。对于随机过采样,由于需要对少数类样本进行复制因此扩大了数据集,造成模型训练复杂度加大,另一方面也容易造成模型的过拟合问题。针对这些问题提出了几种其它的采样算法。
SMOTE算法
SMOTE全称是Synthetic Minority Oversampling Technique即合成少数类过采样技术,它是基于随机过采样算法的一种改进方案,由于随机过采样采取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题,即使得模型学习到的信息过于特别(Specific)而不够泛化(General),SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中,具体如图2所示,算法流程如下。
- 对于少数类中每一个样本$x$,以欧氏距离为标准计算它到少数类样本集$S_min$中所有样本的距离,得到其k近邻。
- 根据样本不平衡比例设置一个采样比例以确定采样倍率$N$,对于每一个少数类样本$x$,从其k近邻中随机选择若干个样本,假设选择的近邻为$\hat{x}$。
- 对于每一个随机选出的近邻$\hat{x}$,分别与原样本按照如下的公式构建新的样本。
SMOTE算法摒弃了随机过采样复制样本的做法,可以防止随机过采样易过拟合的问题,实践证明此方法可以提高分类器的性能。但是由于对每个少数类样本都生成新样本,因此容易发生生成样本重叠(Overlapping)的问题,为了解决SMOTE算法的这一缺点提出一些改进算法,其中的一种是Borderline-SMOTE算法,如图3所示。
在Borderline-SMOTE中,若少数类样本的每个样本$x_i$求k近邻,记作$S_i-knn$,且$S_i-knn$属于整个样本集合$S$而不再是少数类样本,若满足
则将样本$x_i$加入DANGER集合,显然DANGER集合代表了接近分类边界的样本,将DANGER当作SMOTE种子样本的输入生成新样本。特别地,当上述条件取右边界,即k近邻中全部样本都是多数类时,此样本不会被选择为种样本生成新样本,此情况下的样本为噪音。
Informed Undersampling
既然SMOTE可以解决随机过采样容易发生的模型过拟合问题,对应地也有一些采样方法可以解决随机欠采样造成的数据信息丢失问题,答案是Informed undersampling采样技术,informed undersampling采样技术主要有两种方法分别是EasyEnsemble算法和BalanceCascade算法。
EasyEnsemble算法如下图4所示,此算法类似于随机森林的Bagging方法,它把数据划分为两部分,分别是多数类样本和少数类样本,对于多数类样本$S_maj$,通过n次有放回抽样生成n份子集,少数类样本分别和这n份样本合并训练一个模型,这样可以得到n个模型,最终的模型是这n个模型预测结果的平均值。BalanceCascade算法是一种级联算法,BalanceCascade从多数类$S_maj$中有效地选择N且满足$\midN\mid=\midS_min\mid$,将N和$\S_min$合并为新的数据集进行训练,新训练集对每个多数类样本$x_i$进行预测若预测对则$S_maj=S_maj-x_i$。依次迭代直到满足某一停止条件,最终的模型是多次迭代模型的组合。