非平衡数据

4/14/2021 非平衡数据

# 机器学习中有哪些非均衡数据集的处理方法?

  • 通过过抽样和欠抽样解决样本不均衡

抽样是解决样本分布不均衡相对简单且常用的方法,包括过抽样和欠抽样两种。

过抽样

过抽样(也叫上采样、over-sampling)方法通过增加分类中少数类样本的数量来实现样本均衡,最直接的方法是简单复制少数类样本形成多条记录,这种方法的缺点是如果样本特征少而可能导致过拟合的问题;经过改进的过抽样方法通过在少数类中加入随机噪声、干扰数据或通过一定规则产生新的合成样本,例如SMOTE算法。

欠抽样

欠抽样(也叫下采样、under-sampling)方法通过减少分类中多数类样本的样本数量来实现样本均衡,最直接的方法是随机地去掉一些多数类样本来减小多数类的规模,缺点是会丢失多数类样本中的一些重要信息。

总体上,过抽样和欠抽样更适合大数据分布不均衡的情况,尤其是第一种(过抽样)方法应用更加广泛。

  • 通过正负样本的惩罚权重解决样本不均衡

通过正负样本的惩罚权重解决样本不均衡的问题的思想是在算法实现过程中,对于分类中不同样本数量的类别分别赋予不同的权重(一般思路分类中的小样本量类别权重高,大样本量类别权重低),然后进行计算和建模。

使用这种方法时需要对样本本身做额外处理,只需在算法模型的参数中进行相应设置即可。很多模型和算法中都有基于类别参数的调整设置,以scikit-learn中的SVM为例,通过在class_weight : {dict, 'balanced'}中针对不同类别针对不同的权重,来手动指定不同类别的权重。如果使用其默认的方法balanced,那么SVM会将权重设置为与不同类别样本数量呈反比的权重来做自动均衡处理,计算公式为:n_samples / (n_classes * np.bincount(y))。

如果算法本身支持,这种思路是更加简单且高效的方法。

  • 通过组合/集成方法解决样本不均衡

组合/集成方法指的是在每次生成训练集时使用所有分类中的小样本量,同时从分类中的大样本量中随机抽取数据来与小样本量合并构成训练集,这样反复多次会得到很多训练集和训练模型。最后在应用时,使用组合方法(例如投票、加权投票等)产生分类预测结果。

例如,在数据集中的正、负例的样本分别为100和10000条,比例为1:100。此时可以将负例样本(类别中的大量样本集)随机分为100份(当然也可以分更多),每份100条数据;然后每次形成训练集时使用所有的正样本(100条)和随机抽取的负样本(100条)形成新的数据集。如此反复可以得到100个训练集和对应的训练模型。

这种解决问题的思路类似于随机森林。在随机森林中,虽然每个小决策树的分类能力很弱,但是通过大量的“小树”组合形成的“森林”具有良好的模型预测能力。

如果计算资源充足,并且对于模型的时效性要求不高的话,这种方法比较合适。

  • 通过特征选择解决样本不均衡

上述几种方法都是基于数据行的操作,通过多种途径来使得不同类别的样本数据行记录均衡。除此以外,还可以考虑使用或辅助于基于列的特征选择方法。

一般情况下,样本不均衡也会导致特征分布不均衡,但如果小类别样本量具有一定的规模,那么意味着其特征值的分布较为均匀,可通过选择具有显著型的特征配合参与解决样本不均衡问题,也能在一定程度上提高模型效果。

# 请简述一下SMOTE采样方法是如何来处理非平衡数据的?

在合成抽样技术方面,Chawla NY等人提出的SMOTE过抽样技术是基于随机过采样算法的一种改进方案,由于随机过采样简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题,即使模型学习到的信息过于特别(Specific)而不够泛化(General)。

SMOTE的主要思想是利用特征空间中现存少数类样本之间的相似性来建立人工数据,特别是,对于子集 ,对于每一个样本使用K-近邻法,其中K-近邻被定义为考虑中的K个元素本身与的欧氏距离在n维特征空间X中表现为最小幅度值的样本。由于不是简单地复制少数类样本,因此可以在一定程度上避免分类器的过度拟合,实践证明此方法可以提高分类器的性能。但是由于对每个少数类样本都生成新样本,因此容易发生生成样本重叠(overlapping)的问题。算法流程如下:

  • 1)对于少数类中的每一个样本,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到K近邻;
  • 2)根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本,从其K近邻中随机选择若干个样本, 假设选择的近邻为
  • 3)对于每一个随机选出的近邻,分别与原样本按照如下的公式构建新的样本:

2019-05-18-042200.jpg

# 原始的SMOTE算法存在什么问题?如何改进?

原始的SMOTE算法对所有的少数类样本都是一视同仁的,但实际建模过程中发现那些处于边界位置的样本更容易被错分,因此利用边界位置的样本信息产生新样本可以给模型带来更大的提升。Borderline-SMOTE便是将原始SMOTE算法和边界信息算法结合的算法。算法流程如下:

1.首先,对于每个确定一系列K-近邻样本集,称该数据集为,且; 2.然后,对每个样本,判断出最近邻样本集中属于多数类样本的个数,即:||; 3.最后,选择满足下面不等式的:<||<,将其加入危险集

对危险集中的每一个样本点(最容易被错分的样本),采用普通的算法生成新的少数类样本。 2019-05-18-042208.jpg

# 请简述一下Tomek Links欠采样方法。

定义:Tomek links被定义为相反类最近邻样本之间的一对连接。

符号约定:给定一个样本对,其中 ,记是样本之间的距离

公式表示:如果不存在任何样本,使得 < ,那么样本对被称为Tomek Links

使用这种方法,如果两个样本来自Tomek Links,那么他们中的一个样本要么是噪声要么它们都在两类的边界上。所以Tomek Links一般有两种用途:在欠采样中:将Tomek Links中属于是多数类的样本剔除;在数据清洗中,将Tomek Links中的两个样本都剔除。 2019-05-18-042223.jpg

# 请简述一下NearMiss方法

NearMiss方法是利用距离远近剔除多数类样本的一类方法,实际操作中也是借助KNN,总结起来有以下几类:

  • 1)NearMiss-1:在多数类样本中选择与最近的三个少数类样本的平均距离最小的样本
  • 2)NearMiss-2:在多数类样本中选择与最远的3个少数类样本的平均距离最小的样本
  • 3)NearMiss-3:对于每个少数类样本,选择离它最近的给定数量的多数类样本

NearMiss-1和NearMiss-2方法的描述仅有一字之差,但其含义是完全不同的:NearMiss-1考虑的是与最近的3个少数类样本的平均距离,是局部的;NearMiss-2考虑的是与最远的3个少数类样本的平均距离,是全局的。

NearMiss-1方法得到的多数类样本分布也是”不均衡“的,它倾向于在比较集中的少数类附近找到更多的多数类样本,而在孤立的(或者说是离群的)少数类附近找到更少的多数类样本,原因是NearMiss-1方法考虑的局部性质和平均距离。

NearMiss-3方法则会使得每一个少数类样本附近都有足够多的多数类样本,显然这会使得模型的精确度高、召回率低。

实验结果表明得到NearMiss-2的不均衡分类性能最优。

# EasyEnsemble算法是如何解决非平衡数据的问题的?

它把数据划分为两部分,分别是多数类样本和少数类样本,对于多数类样本,通过次有放回抽样生成份子集,少数类样本分别和这份样本合并训练AdaBoost分类器,这样可以得到个模型,最终的模型采用加权多数表决的方法,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率小的弱分类器的权值,使其在表决中起较小的作用。这里假设多数类样本为N,少数类样本为P,算法流程如下: 2019-05-18-042236.jpg

EasyEnsemble的想法是多次随机欠抽样,尽可能全面地涵盖所有信息,算法特点是利用boosting减小偏差(Adaboost)、bagging减小方差(集成分类器)。实际应用的时候也可以尝试选用不同的分类器来提高分类的效果。

2019-05-18-042243.jpg

# BalanceCascade算法是如何解决非平衡数据的问题的?

EasyEnsemble算法训练的子过程是独立的,BalanceCascade则是一种级联算法,这种级联的思想在图像识别中用途非常广泛。算法流程如下: 2019-05-18-042250.jpg

BalanceCascade算法得到的是一个级联分类器,将若干个强分类器由简单到复杂排列,只有和少数类样本特征比较接近的才有可能输入到后面的分类器,比如边界点,因此能更充分地利用多数类样本的信息,一定程度上解决随机欠采样的信息丢失问题。

# SMOTE过采样和Tomek Links欠采样算法是否可以结合起来?

SMOTE+Tomek Links方法的算法流程非常简单: 1.利用SMOTE方法生成新的少数类样本,得到扩充后的数据集T 2.剔除T中的Tomek Links对

普通的SMOTE方法生成的少数类样本是通过线性插值得到的,在平衡类别分布的同时也扩张了少数类的样本空间,产生的问题是可能原本属于多数类样本的空间被少数类“入侵”,容易造成模型的过拟合。

Tomek Links对寻找的是那种噪声点或者边界点,可以很好地解决“入侵”的问题,下图红色加号为SMOTE产生的少数类样本,可以看到,红色样本“入侵”到原本属于多数类样本的空间,这种噪声数据问题可以通过Tomek Links很好地解决。

2019-05-18-042258.jpg

由于第一步SMOTE方法已经很好地平衡了类别分布,因此在使用Tomek Links对的时候考虑剔除所有的Tomek Links对。