数据探索性分析(EDA)——不平衡样本处理

1、何为不平衡样本?

样本不平衡是指分类任务中不同类别的训练样例数目差别很大的情况。在实际的分类任务中,我们经常会遇到类别不平衡,例如广告点击率预测、情感分类、异常检测等。而机器学习算法通常假设不同类别的样本数量大致相似,因此在假设与实际不符合的情况下,样本不平衡会导致学习算法效果大打折扣。
在这种情况下,我们通常会对样本进行处理,不过也存在一些情况,样本不平衡对实验的影响不大:

  • 当问题指标是ROC或者AUC等对样本不平衡不敏感的指标时;
  • 正样本、负样本具有同等重要性的情况。

其实有时候两者是联动的,比如在实际业务场景中,我们更侧重模型的召回率,即更关心正样本的预测情况,此时,正负样本的重要性就不同了,那么就需要对不平衡样本进行处理了。

实际场景比较常见的样本不平衡的现象之一是长尾现象,即我们常说的“二八原理”。比如某些商品的购买量很小,但这类商品的销量基数很大(牛仔裤销量基数很大,但紧身牛仔裤销量很小)。

在这里插入图片描述
而在很多算法模型的应用都是基于某种分布,比较多的是基于多元正态分布,这就造成了实际分布不均匀的数据和算法的假设之间存在偏差的情况。同时,不平衡的样本对模型训练后的精度及相关的评价指标如召回率等也会造成影响。比如在分类任务中,不同类别的训练样本数据存在差异很大的情况,这时样本不均衡往往会造成模型对样本数比较多的类别过拟合,对比较少的类别欠拟合的现象,即总是将样本分到样本较多的分类类别中。

以下表为例:

类别
预测为负样本
预测为正样本
实际为负样本
9700
150
实际为正样本
50
100

则准确率accuracy= 9700 + 100 9700 + 150 + 50 + 100 = 0.98 {9700+100\over9700+150+50+100}=0.98 9700+150+50+1009700+100=0.98。假如将所有的样本都预测为负样本,此时准确率accuracy= 9700 + 150 9700 + 150 + 50 + 100 = 0.985 {9700+150\over9700+150+50+100}=0.985 9700+150+50+1009700+150=0.985,准确率进一步提升,但这样的模型显然是不能满足实际业务要求的,并且事实上模型已经对这个不平衡的样本过拟合了。再以吴恩达老师所举例子进行说明:医院根据肿瘤的直径等进行恶性肿瘤和良性肿瘤的划分,其中真实情况是100个肿瘤中有2个是恶性的,98个良性的。这种情况下,模型只要把所有肿瘤都判断为良性的,那就有高达98%的正确率了,但这样其实是不妥当的。那么,怎么解决这个问题呢?就是对过多的样本进行欠采样,对过少的样本进行过采样。

2、不平衡样本处理方法

2.1 知识引入

引入部分模型评价中的基本概念,便于后续理解:

TP(True Positive, 真阳性)、TN(True Negative, 真阴性)、FP(False Positive, 假阳性)、FN(False Negative, 假阴性)

TP 表示将实际标签为正的样本判断为正的样本数量或者比例;
FP 表示将实际标签为负的样本判断为正的样本数量或者比例;
FN 表示将实际标签为正的样本判断为负的样本数量或者比例;
TN 表示将实际标签为负的样本判断为负的样本数量或者比例。

有时候很容易记混,所以可以这么记:第一个字母代表是否判断正确,第二个字母代表样本的预测值。

2.2 处理方法

根据正负样本的不平衡情况,处理方法主要有欠采样、过采样以及两者的结合:

2.2.1 欠采样(下采样,downsampling):

1、 随机欠采样

例如,数据中有正样本50条,负样本950条,正样本占比5%。随机欠采样就是在负样本中随机选出10%即95例,与正样本组成新的训练集(95+50)。如此一来,正样本所占的比例为50/145=35%,比原来的5%有了很大增加。随机欠采样的优点是在平衡数据的同时减小了数据量,加速了训练;缺点是数据量的减少会影响模型特征学习能力和泛化能力。

2、Edited Nearest Neighbor (ENN)

思想是:遍历多数类别的样本,如果某个多数类别样本的大部分k近邻样本都跟他自己本身的类别不一样,就将其删除,然后使用删除后的数据进行模型训练。

在这里插入图片描述

该方法的多次使用就是Repeated Edited Nearest Neighbor(RENN),即重复ENN的步骤,直到数据集无法再被删除后,再进行模型训练。

3、Tomek Link Removal

在实际业务中,数据不但存在样本不均衡的现象,还经常伴随着不同类别的样本重叠问题,如下图。这种情况下,如果直接采用smote进行过采样,会加剧样本的重叠,影响分类效果。此时,我们就可以采用欠采样的方法——Tomek Link Removal。

在这里插入图片描述
其思想是:通过去除类别边缘中的多数类样本,使得类别间margin更大,便于分类。具体方法是:如果有两个不同类别的样本,它们的最近邻都是对方,即A的最近邻是B,B的最近邻是A,则A,B就是Tomek link。我们要做的就是将所有Tomek link都删除掉,方法是:对于组成Tomek link的两个样本,如果有一个属于多数类样本,就将该多数类样本删除掉。此时就可以发现正负样本就分得比较开了,并且正负样本更平衡了。如下图所示。

在这里插入图片描述

2.2.2 过采样(上采样,oversampling)

1、随机过采样

例如,数据中有正样本50条,负样本950条,正样本占比5%。随机过采样就是将正样本复制10次,如此之后,正样本就有500例,与负样本组成新的训练集(500+950)。这样,正样本所占的比例就是500/1450=35%。随机过采样的优点是相对于负采样,没有数据信息的丢失;缺点是对较少类别的复制,这增加了过拟合的可能性。

2、SMOTE算法

SMOTE(Synthetic Minority Oversampling Technique, 合成少数类过采样技术),是基于随机过采样的一种改进方法。由于随机复制少数样本来增加样样本进行训练的模型缺少泛化能力,并容易过拟合,因此SMOTE算法采用对少数样本进行人工合成的方法将新样本加入训练集中,从而使模型训练更具有泛化能力。SMOTE算法的基本思想是:通过对少数类样本进行插值来产生更多的少数类样本,即针对每个少数类样本,从它的k近邻中随机选择一个样本 (该样本也是少数类中的一个),然后在两者之间的连线上随机选择一点作为新合成的少数类样本。具体步骤如下:

(1)计算少量类别的样本 x i x_i xi与所有样本点的距离

(2)根据样本的不平衡设定过采样倍率,找到最近的k个样本。

(3)对于每一个新生成的样本按 x n e w = x i + r a n d ( 0 , 1 ) ∗ ( x j − x i ) x_{new}=x_i+rand(0,1)*(x_j-x_i) xnew=xi+rand(0,1)(xjxi)
在这里插入图片描述
这个方法的优点是通过人工构造相似样本取代直接复制的方法,减弱了过拟合,也没有丢失有用的信息;缺点是由于没有考虑到近邻样本可能来自不同类别,因此导致增大类别间的重叠。

其实很多时候,通过随机欠采样以及随机过采样就可以解决大多数的样本分布不均衡的问题。如果发现单独的过采样和欠采样均没有较好的效果,也可以采用欠采样和过采样结合的方法。

2.2.3 欠采样和过采样的结合

欠采样和过采样的结合方法如下:

  • SMOTE + Tomek Link Removal
  • SMOTE + ENN

不平衡样本的处理方法就介绍这些,下篇文章再见。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值