不均衡样本集问题
2019-08-27 11:01:52
问题描述:对于二分类问题,如果在训练的时候正负样本集合非常的不均衡,比如出现了1 :1000甚至更大的比例悬殊,那么如何处理数据以更好的训练模型。
问题求解:
为什么很多的分类模型在训练数据的时候会出现数据不均衡的问题呢?本质原因是模型在训练时优化的目标函数和人们在测试的时候的评价标准不一致。这种不对齐可能是由于训练数据的样本分布与测试时的样本分布一致,比如在训练的时候正负样本严重不均衡,但是在测试的时候,正负的比例几乎是1 :1。也可能是由于训练阶段不同类别的权重与测试的时候不一致,例如在训练的时候认为所有样本的贡献是一致的,但是在测试的时候某些样本的正确率要求要高很多。
根据上述的问题,一般可以从两个角度来处理样本不均衡的问题。
- 基于数据的方法
基于数据的方法核心就是将原本不均衡的训练集合通过采样的方式使之变的均衡。具体来说有两种方案,一是过采样,二是欠采样。
过采样:过采样本质就是扩充少样本,使之数量变多。过采样的算法可以理解为是启发式的,也就是说言之有理即可,没有一条绝对正确的算法能够保证过采样算法的效果。
1)最简单的方案就是直接从少样本的训练集中有放回的选取样本,本质是对少样本数据集进行了复制。缺点是没有增加训练数据集的信息量,容易过拟合。
2)SMOTE算法,对少数类样本集中每个样本x,从它在少数集中的K近邻中随机选择一个样本y,然后在x,y连线上随机选取一个点作为新合成的样本。
3)对少数类加入噪声扰动或者变换(如图像数据集中对图片进行剪裁,翻转,旋转,加光照等)以构造出新的样本。
欠采样:欠采样本质就是减少多样本,使之数量变少。欠采样的算法可以理解为是启发式的,同样没有一个标准的算法能够保证欠采样的效果。
1)最简单的方案就是直接从多数类中随机挑选部分样本组成新的多数类样本集。缺点是会丢失信息,造成模型只学到了整体模式的一部分。
2)可以采用informed undersampling算法来解决随机欠采样导致的数据丢失的问题。最常见的算法是easy ensemble算法。也就是每次从多数类中随机抽取一个子集,然后使用子集和少数类训练一个分类器;重复上述的过程得到若干的分类器,最终的分类结果是上述分类器集成的结果。
3)NearMiss算法,利用K近邻信息挑选具有代表性的样本,或者根据聚类的结果进行挑选。
- 基于算法的方法
在样本不均衡的时候,也可以通过改变模型训练时候的目标函数来矫正这种不平衡性。最常见的方案是对不同的类别采用不同的权重。