Press "Enter" to skip to content

机器学习之类别不平衡问题:从数据集角度处理不平衡问题(一)

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

在之前的两篇文 章中,首先介绍了机器学习中模型常用的评价指标,这些指标主要是基于混淆矩阵演变而来,不同的指标有着不同的适用性。之后,我们介绍了基于这些指标的不平衡问题中常用的指标:ROC曲线和PR曲线及其对应的AUC,以及K-S曲线。在明确了指标之后,我们才能据此选择合适的方法来处理不平衡问题。处理不平衡问题的方法可以分为两种:

 

1、从数据集角度,改变原本不平衡的数据集分布,来获得一个较为平衡的数据分布,然后使用相应的学习算法,得到合适的模型。

 

2、从算法本身出发,根据数据集的分布情况改变算法的损失函数进行优化;或者是从不同的角度去看待问题,将问题本身考虑为一分类(One Class Learning)或异常检测(Novelty Detection)问题。

 

本文将介绍从数据集角度出发,如何使用采样的方法来处理不平衡问题。采样方法大致可分为过采样 (Over-sampling) 和欠采样 (Under-sampling) ,虽然过采样和欠采样思想简单,但这些年来研究出了很多变种,本文将基于imbalanced-learn,对一些常用的方法进行简单介绍,并在几个数据集上进行结果的对比。

 

 

1、 过采样

 

所谓过采样,简单的讲就是增加少数类的样本量。如下图所示,过采样的方法主要有以下四种。

 

 

1.1、 Random OverSampler

 

随机过采样就是从少数类的样本中随机抽样,再将抽样得来的样本添加到数据集中。这种做法的最大优点就是简单,但是其缺点也十分明显,训练出来的模型往往会严重的过拟合。由于进行了重复采样,空间中的某一些点会重复出现,因而导致模型在对某一个重复采样的样本点进行划分时,连带着对这些重复的样本点进行了同样的划分,使得模型会一下子分对或者让分错许多个样本点。一个简单有效的解决办法就是在每次采样生成新的样本点时,可以加入轻微的随机扰动。

 

1.2、 SMOTE

 

合成少数类过采样技术(SMOTE,Synthetic Minority Oversampling Technique),是基于随机过采样的一种改进方案。由于随机过采样采取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题。SMOTE算法的基本思想是对少数类样本进行插值来人工合成新样本添加到数据集中。具体步骤如下:

 

i).计算少数类样本点的k近邻点,其中k为参数;

 

ii).从k近邻点中随机选择一个,按照下述公式计算新生成样本:

 

 

其中 是 的一个随机选择的k近邻点, 是一个(0,1)之间的随机数;

 

iii).重复上述过程直到每类样本点个数相同。

 

 

虽然SMOTE在随机过采样上有所改进,但是仍然存在几个问题:

 

(1).容易产生类与类之间的重叠的问题(Overlapping),例如在多数类的样本点中存在一些可能是噪声的少数类样本点,此时将导致新合成的样本与多数类产生重叠,导致分类困难。

 

(2).合成的新样本可能对模型的分类没有提供有意义的信息,例如选择的少数类样本点的周为都是少数类样本点,那幺这样合成的新样本将不会提供太多有意义的信息,类似于支持向量机(SVM)中,远离分类超平面的点对超平面的影响甚微。

 

1.3、Border-line SMOTE

 

Border-line SMOTE的思想是寻找那些处于两个类别边界附近的样本点,由其合成新的样本,这样合成的样本才会提供对模型分类有意义的信息。 具体如下:

 

i).计算少数类样本点的k近邻,按照k近邻中样本类别个数的比例多少,将样本分为三种状态,如下:

 

“noise”:所有的k近邻个样本都属于多数类;

 

“danger”:超过一半的k近邻样本属于多数类;

 

“safe”:超过一半的k近邻样本属于少数类;

 

 

ii).从处于”danger”状态下的样本中进行随机选择样本;

 

iii).对选择的样本用SMOTE算法生成新样本,重复上述过程。

 

其中Border-line 1 SMOTE表示的是随机选择的k近邻样本与该样本本身处于不同的类,Border-line 2 SMOTE表示的是随机选择的k近邻样本可以属于任意一个类,Border-line SVM SMOTE表示的是使用支持向量机产生支持向量后再生成新的少数类样本。

 

处于”danger”状态下的样本表示的是类与类之间边界附近的样本,处于边界附近的样本更容易被分错,也更能提供有意义的信息,Border-line SMOTE只利用这些样本来生成新的样本,而SMOTE则是对所有的少数类样本一视同仁。

 

1.4、ADASYN

 

自适应合成抽样(ADASYN,adaptive synthetic sampling)是根据数据集的分布情况,自动确定每个少数类样本需要合成的新的样本数量。其最大的特点是采用某种机制自动决定每个少数类样本需要产生多少合成样本,而不是像SMOTE那样对每个少数类样本合成同数量的样本。具体流程如下:

 

i).计算需要合成的样本总量G:

 

 

其中 与 分别代表多数类样本数量与少数类样本数量, 为控制样本总量的参数,当 时合成后的数据各类别样本数量相同;

 

ii).对每个少数类样本计算其k近邻,并计算:

 

iii).对(ii)中得到的每个少数类样本的 ,进行归一化:

 

 

表示少数类样本周围多数类样本的情况;

 

vi). 计算每个少数类样本需合成的数量 :

 

 

再用SMOTE算法合成新样本。

 

ADASYN算法利用分布情况自动确定每个少数类样本点需要合成的样本数量,相当于给每个少数类样本一个权重,少数类周围的多数类样本越多,则其权重也就越大。因此ADASYN算法的一个明显的缺点就是容易收到噪声的影响,从而导致生成的样本与SMOTE算法一样会有类与类之间样本显着重叠的问题。

 

下面通过人工构造一个不平衡数据集来对比不同过采 样方法的效果:

 

 

 

 

 

上面四幅图表示的分别是不同类别间距的情况下,各种过采样方法的结果。其中class_sep=1.0表示的是类与类之间没有重叠的情况,class_sep=0.1表示的是各类之间几乎重叠,从原图中可以明显的看出。

 

从图中可以看出,SMOTE有着容易产生类与类之间的重叠的问题以及会产生无意义样本的问题;另外我们也可以看到ADASYN容易受到噪声影响,导致产生类与类之间的重叠。反观Border-line算法,相对其他SMOTE与ADASYN,Border-line在整体上有着较强的鲁棒性。在类与类之间没有明显重叠的情况下,能够利用在类别边界附近少数类样本生成有意义的样本,为模型提供有意义的信息。Border-line 2算法由于随机选择k近邻,因此其生成结果在当前数据集下,会略差于Border-line 1。与Border-line 1相比,Border-line SVM会在边界处生成更多的少数类样本。但是在类与类之间的重叠较为严重时,各种过采样算法的生成结果没有本质的区别,此时过采样方法对于处理不平衡问题可能会没有帮助。

 

本篇主要介绍了过采样方法来处理不平衡问题,在类与类之间没有明显重叠的情况下,Border-line的方法会优于其他方法。在下篇中,我们将介绍欠采样等其他处理不平衡问题的方法。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注