类别不平衡问题

概述

类别不均衡是指在分类学习算法中,不同类别样本的比例相差悬殊,它会对算法的学习过程造成重大的干扰。比如在一个二分类的问题上,有1000个样本,其中5个正样本,995个负样本,在这种情况下,算法只需将所有的样本预测为负样本,那么它的精度也可以达到99.5%,虽然结果的精度很高,但它依然没有价值,因为这样的学习算法不能预测出正样本。这里我们可以知道不均衡问题会导致样本较少那一类的高错分率,即较少一类的样本会有较大的比例会被预测成样本数量较多的那一类。

​ 样本分布不均衡将导致样本量少的分类所包含的特征过少,并很难从中提取规律;即使得到分类模型,也容易产生过度依赖于有限的数据样本而导致过拟合的问题,当模型应用到新的数据上时,模型的准确性和鲁棒性将很差。

定义

类别不平衡问题,顾名思义,即数据集中存在某一类样本,其数量远多于或远少于其他类样本,从而导致一些机器学习模型失效的问题。

存在场景

类别不平衡问题在很多场景中存在。

  • 异常检测场景。大多数企业中的异常个案都是少量的,比如恶意刷单、黄牛订单、信用卡欺诈、电力窃电、设备故障等,这些数据样本所占的比例通常是整体样本中很少的一部分,以信用卡欺诈为例,刷实体信用卡的欺诈比例一般都在0.1%以内。
  • 客户流失场景。大型企业的流失客户相对于整体客户通常是少量的,尤其对于具有垄断地位的行业巨擘,例如电信、石油、网络运营商等更是如此。
  • 罕见事件的分析。罕见事件与异常检测类似,都属于发生个案较少;但不同点在于异常检测通常都有是预先定义好的规则和逻辑,并且大多数异常事件都对会企业运营造成负面影响,因此针对异常事件的检测和预防非常重要;但罕见事件则无法预判,并且也没有明显的积极和消极影响倾向。例如由于某网络大V无意中转发了企业的一条趣味广告导致用户流量明显提升便属于此类。
  • 发生频率低的事件。这种事件是预期或计划性事件,但是发生频率非常低。例如每年1次的双11盛会一般都会产生较高的销售额,但放到全年来看这一天的销售额占比很可能只有1%不到,尤其对于很少参与活动的公司而言,这种情况更加明显。这种属于典型的低频事件。

解决方案

1、过采样,减少数量较多那一类样本的数量,使得正负样本比例均衡。
2、欠采样,增加数量较少那一类样本的数量,使得正负样本比例均衡。
3、不处理样本,样本分类阈值移动。

欠采样方法

直接对训练集中多数类样本进行“欠采样”(undersampling),即去除一些多数类中的样本使得正例、反例数目接近,然后再进行学习。

随机欠采样方法

随机欠采样顾名思义即从多数类$S_{maj}$中随机选择一些样样本组成样本集 $E$。然后将样本集 $E$从 $S_{maj}$ 中移除。新的数据集 $S_{new-maj}= S_{maj}- E$。

随机欠采样缺点

随机欠采样方法通过改变多数类样本比例以达到修改样本分布的目的,从而使样本分布较为均衡,但是这也存在一些问题。对于随机欠采样,由于采样的样本集合要少于原来的样本集合,因此会造成一些信息缺失,即将多数类样本删除有可能会导致分类器丢失有关多数类的重要信息。

为了克服随机欠采样方法导致的信息缺失问题,又要保证算法表现出较好的不均衡数据分类性能,出现了欠采样法代表性的算法EasyEnsemble和BalanceCascade算法。

欠采样代表性算法-EasyEnsemble

算法步骤:

1)从多数类中有放回的随机采样$n$次,每次选取与少数类数目相近的样本个数,那么可以得到$n$个样本集合记作${S_{1maj},S_{2maj},…,S_{nmaj}}$。

2)然后,将每一个多数类样本的子集与少数类样本合并并训练出一个模型,可以得到$n$个模型。

3)最终将这些模型组合形成一个集成学习系统,最终的模型结果是这$n$个模型的平均值。

欠采样代表性算法-BalanceCascade

BalanceCascade算法基于Adaboost,将Adaboost作为基分类器,其核心思路是:

1)在每一轮训练时都使用多数类与少数类数量相等的训练集,训练出一个Adaboost基分类器。

2)然后使用该分类器对全体多数类进行预测,通过控制分类阈值来控制假正例率(False Positive Rate),将所有判断正确的类删除。

3)最后,进入下一轮迭代中,继续降低多数类数量。

扩展阅读

Liu X Y, Wu J, Zhou Z H. Exploratory undersampling for class-imbalance learning[J]. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 2009, 39(2): 539-550.

这篇论文提出了两种欠采样的方法:EasyEnsemble和BalanceCascade。

过采样方法

对训练集里的少数类进行“过采样”(oversampling),即增加一些少数类样本使得正、反例数目接近,然后再进行学习。

随机过采样方法

随机过采样是在少数类$S_{min}$ 中随机选择一些样本,然后通过复制所选择的样本生成样本集$E$,将它们添加到$S_{min}$中来,扩大原始数据集从而得到新的少数类集合$S_{new-min}$。新的数据集$S_{new-min} = S_{min} + E$。

随机过采样缺点

对于随机过采样,由于需要对少数类样本进行复制来扩大数据集,造成模型训练复杂度加大。另一方面也容易造成模型的过拟合问题,因为随机过采样是简单的对初始样本进行复制采样,这就使得学习器学得的规则过于具体化,不利于学习器的泛化性能,造成过拟合问题。

为了解决随机过采样中造成模型过拟合问题,又能保证实现数据集均衡的目的,出现了过采样法代表性的算法SMOTE和Borderline-SMOTE算法。

过采样代表性算法-SMOTE

SMOTE (synthetic minority oversampling technique) 的思想概括起来就是在少数类样本之间进行插值来产生额外的样本。具体地,对于一个少数类样本$x_i$使用$K$ 近邻法($k$ 值需要提前指定),求出距离$x_i$最近的$k$ 个少数类样本,其中距离定义为样本之间$n$ 维特征空间的欧氏距离。然后从$k$ 个近邻点中随机选取一个,使用下列公式生成新样本:

$$\mathbf{x}{new}=\mathbf{x}{i}+(\mathbf{\hat{x}}{i}-\mathbf{x}{i}) \times \delta $$

其中$\hat{x}$ 为选出的$k$ 近邻点,$δ∈[0,1]$ 是一个随机数。

SMOTE算法是对随机过采样方法的一个改进算法,由于随机过采样方法是直接对少数类进行重采用,会使训练集中有很多重复的样本,容易造成产生的模型过拟合问题。而SOMT算法的基本思想是对每个少数类样本,从它的最近邻中随机选择一个样本 ( 是少数类中的一个样本),然后在 和 之间的连线上随机选择一点作为新合成的少数类样本。

算法描述

1).对于少数类中的每一个样本,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到其$k$近邻。

2).根据样本不平衡比例设置一个采样比例以确定采样倍率$N$,对于每一个少数类样本,从其$k$近邻中随机选择若干个样本,假设选择的是$\hat{x_i}$ 。

3).对于每一个随机选出来的近邻$\hat{x_i}$,分别与按照如上公式构建新的样本。

算法特点

SMOTE算法摒弃了随机过采样复制样本的做法,可以防止随机过采样中容易过拟合的问题,实践证明此方法可以提高分类器的性能。但是SMOTE算法也存以下两个缺点:

1)由于对每个少数类样本都生成新样本,因此容易发生生成样本重叠的问题。

2)在SMOTE算法中,出现了过度泛化的问题,主要归结于产生合成样本的方法。特别是,SMOTE算法对于每个原少数类样本产生相同数量的合成数据样本,而没有考虑其邻近样本的分布特点,这就使得类间发生重复的可能性增大。
为了克服以上两点的限制,多种不同的自适应抽样方法相继被提出,其中具有代表性的算法包括Borderline-SMOTE算法。

扩展阅读:

Chawla N V, Bowyer K W, Hall L O, et al. SMOTE: synthetic minority over-sampling technique[J]. Journal of artificial intelligence research, 2002, 16: 321-357.

这篇论文提出了SMOTE算法。

采样方法图

-------------本文结束感谢您的阅读-------------