上的介质簇的结构不正确SQL Server 介质集有2个介质簇_样本集


在训练二分类模型时,例如医疗诊断、网络入侵检测、信用卡反诈骗等,经常会遇到正负样本不均衡的问题。对于很多分类算法,如果直接采用不均衡的样本集来进行训练学习,会存在一些问题。例如,如果正负样本比例达到1∶99,则 分类器简单地将所有样本都判为负样本就能达到99%的正确率,显然这并不是我们想要的,我们想让分类器在正样本和负样本上都有足够的准确率和召回率。

那么,对于二分类问题,当训练集中正负样本非常不均衡时,如何处理数据以更好地训练分类模型?

首先,出现训练数据不均衡时的原因,是因为模型在训练时优化的目标函数和人们在测试时使用的评价标准不一致。

这种“不一致”可能是由于训练数据的样本分布于测试时样本分布不一致。例如,在训练时优 化的是整个训练集(正负样本比例可能是1∶99)的正确率,而测试时可能想要模 型在正样本和负样本上的平均正确率尽可能大(实际上是期望正负样本比例为 1∶1);也可能是由于训练阶段不同类别的权重(重要性)与测试阶段不一致, 例如训练时认为所有样本的贡献是相等的,而测试时假阳性样本(False Positive) 和伪阴性样本(False Negative)有着不同的代价。

如上问题,一般可以从两个角度来处理样本不均衡问题。

基于数据的方法

对数据进行重采样,使原本不均衡的样本变得均衡。首先,记样本数大的类别为


,样本数小的类别为


,它们对应对样本集分别



。根据题设,



最简单的处理不均衡样本集的方法是随机采样。采样一般分为过采样(Over-sampling)和欠采样(Under-sampling)。随机过采样是从少数类样本集


中随机重复抽取样本(有放回)以得到更多样本;随机欠采样则相反,从多数类样本集


中随机选取较少的样本(有放回或无放回)。


直接的随机采样虽然可以使样本集变得均衡,但会带来一些问题,比如,过 采样对少数类样本进行了多次复制,扩大了数据规模,增加了模型训练的复杂 度,同时也容易造成过拟合;欠采样会丢弃一些样本,可能会损失部分有用信息,造成模型只学到了整体模式的一部分。 为了解决上述问题,通常在过采样时并不是简单地复制样本,而是采用一些 方法生成新的样本。

例如,SMOTE算法对少数类样本集Smin中每个样本x,从它 在


中的K近邻中随机选一个样本y,然后在


连线上随机选取一点作为新合成的样本(根据需要的过采样倍率重复上述过程若干次),如下图所示。这种合成新 样本的过采样方法可以降低过拟合的风险。


上的介质簇的结构不正确SQL Server 介质集有2个介质簇_数据_02


SMOTE算法为每个少数类样本合成相同数量的新样本,这可能会增大类间重 叠度,并且会生成一些不能提供有益信息的样本。为此出现Borderline-SMOTE、 ADASYN等改进算法。Borderline-SMOTE只给那些处在分类边界上的少数类样本 合成新样本,而ADASYN则给不同的少数类样本合成不同个数的新样本。此外, 还可以采用一些数据清理方法(如基于Tomek Links)来进一步降低合成样本带来 的类间重叠,以得到更加良定义(well-defined)的类簇,从而更好地训练分类 器。

同样地,对于欠采样,可以采用Informed Undersampling来解决由于随机欠采 样带来的数据丢失问题。常见的Informed Undersampling算法有:

(1)Easy Ensemble算法。


,然后用


训练一个分类器;重复上述过程若干次,得到多个分类器, 最终的分类结果是这多个分类器结果的融合。


(2)Balance Cascade算法。级联结构,在每一级中从多数类


中随机抽取子 集E,用


训练该级的分类器;然后将


中能够被当前分类器正确判别的样本剔除掉,继续下一级的操作,重复若干次得到级联结构;最终的输出结果也是各 级分类器结果的融合。


(3)其他诸如NearMiss(利用K近邻信息挑选具有代表性的样本)、One-sided Selection(采用数据清理技术)等算法。

在实际应用中,具体的采样操作可能并不总是如上述几个算法一样,但基本思路很多时候还是一致的。例如,基于聚类的采样方法,利用数据的类簇信息来指导过采样/欠采样操作;经常用到的数据扩充方法也是一种过采样,对少数类样本进行一些噪声扰动或变换(如图像数据集中对图片进行裁剪、翻转、旋转、加光照等)以构造出新的样本;而Hard Negative Mining则是一种欠采样,把比较难的样本抽出来用于迭代分类器。

基于算法的方法

在样本不均衡时,也可以通过改变模型训练时的目标函数(如代价敏感学习中不同类别有不同的权重)来矫正这种不平衡性;当样本数目极其不均衡时,也可以将问题转化为单类学习(one-class learning)、异常检测(anomaly detection)。