处理不平衡样本集的采样方法

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

为什么很多分类模型在训练数据不均衡时会出现问题?
本质原因是模型在训练时优化的目标函数和人们在测试时使用的评价标准不一致。这种“不一致”可能是由于训练数据的样本分布与测试时期望的样本分布不一致,例如,在训练时优化的是整个训练集(正负样本比例可能是1∶99)的正确率,而测试时可能想要模型在正样本和负样本上的平均正确率尽可能大(实际上是期望正负样本比例为1∶1);也可能是由于训练阶段不同类别的权重(重要性)与测试阶段不一致。

根据上述分析,一般可以从两个角度来处理样本不平衡问题。

  • 基于数据的方法
    对数据进行重采样,使原本不平衡的样本变得均衡。首先,记样本数较大的类别为 C m a x C_{max} Cmax,样本数较少的类别为 C m i n C_{min} Cmin,对应的样本集分别为 S m a x S_{max} Smax S m i n S_{min} Smin。显然, S m a x > > S m i n S_{max}>>S_{min} Smax>>Smin
    最简单的处理不平衡样本集的方法是随机采样。采样一般分为过采样和欠采样。过采样是从少数类样本集 S m i n S_{min} Smin中随机重复抽取样本(有放回)得到更多样本;欠采样是从多数类样本集 S m a x S_{max} Smax随机选取较少的样本(有放回或无放回)。
    直接的随机采样虽然可以使样本集变得均衡,但会带来一些问题,比如,过采样对少数类进行多次复制,扩大了数据规模,增加了模型训练的复杂度,同时也容易导致过拟合;欠采样会丢弃一些样本,可能会损失部分有用信息,造成模型只学到了整体模式的一部分。
    为了解决上述问题,通常在过采样时并不是简单地复制样本,而是采用一些方法生成新的样本。例如,SMOTE算法对少数类样本集 S m i n S_{min} Smin中每个样本x,从它在 S m i n S_{min} Smin中的K近邻中随机选一个样本y,然后在x,y连线上随机选取一点作为新合成的样本,这种合成新样本的过采样方法可以降低过拟合的风险。
    SMOTE算法为每个少数类样本合成相同数量的新样本,这可能会增大类间重叠度,并且会生成一些不能提供有益信息的样本。为此出现Borderline-SMOTE、ADASYN等改进算法。Borderline-SMOTE只给那些处在分类边界上的少数类样本合成新样本,而ADASYN则给不同的少数类样本合成不同个数的新样本。此外,还可以采用一些数据清理方法(如基于Tomek Links)来进一步降低合成样本带来的类间重叠,以得到更加良定义(well-defined)的类簇,从而更好地训练分类器。

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

  1. Easy Ensemble算法。 每次从多数类Smaj中上随机抽取一个子集E(|E|≈|Smin|),然后用E+Smin训练一个分类器;重复上述过程若干次,得到多个分类器,最终的分类结果是这多个分类器结果的融合。
  2. Balance Cascade算法。级联结构,在每一级中从多数类Smaj中随机抽取子集E,用E+Smin训练该级的分类器;然后将Smaj中能够被当前分类器正确判别的样本剔除掉,继续下一级的操作,重复若干次得到级联结构;最终的输出结果也是各级分类器结果的融合。
  3. 其他诸如NearMiss(利用K近邻信息挑选具有代表性的样本)、Onesided Selection(采用数据清理技术)等算法。
  • 基于算法的方法
    在样本不均衡时,也可以通过改变模型训练时的目标函数(如代价敏感学习中不同类别有不同的权重)来矫正这种不平衡性;当样本数目极其不均衡时,也
    可以将问题转化为单类学习(one-class learning)、异常检测(anomaly detection)。
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值