机器学习-类别不平衡问题

一、类别不平衡         

类别不平衡(class-imbalance)是指分类任务中不同类别的训练样例数目差别很大的情况。比如说一个二分类问题,1000个训练样本,比较理想的情况是正类、负类样本的数量相差不多;而如果正类样本有998个、负类样本仅2个,就意味着存在类不平衡。那么学习方法只需返回一个永远将新样本预测为反例的学习器,就能达到99.8% 的精度;然而这样的学习器往往没有价值,因为它不能预测出任何正例。假设一个二分类(0-1)问题,正类样本(label为1)较少,反类样本(label为0)很多。

         现有技术大体上有三类做法:第一类是直接对训练集里的反类样例进行"欠采样" (undersampling) ,即去除一些反例使得正、反例数目接近,然后再进行学习;第二类是对训练集里的正类样例进行"过采样" (oversampling) ,即增加一些正例使得正、反例数目接近,然后再进行学习;第三类则是直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,要将其式嵌入到决策过程中,称为"阈值移动" (threshold-moving)。

二、欠采样法

         欠采样法的时间开销通常远小于过采样法,因为前者丢弃了很多反例,使得分类器训练集远小于初始训练集。另一方面,欠采样法若随机丢弃反例,可能丢失一些重要信息。欠采样法的代表性算法 EasyEnsemble 则是利用集成学习机制,将反例划分为若干个集合供不同学习器使用,这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要信息。

          利用集成学习机制,每次从大多数类中抽取和少数类数目差不多的重新组合,总共构成n个新的训练集,基于每个训练集训练出一个AdaBoost分类器(带阈值),最后结合之前训练分类器结果加权求和减去阈值确定最终分类类别。

                                                                    

三、过采样法      

         过采样法增加了很多正例,其训练集大于初始训练集,需注意的是,过采样法不能简单地对初始正例样本进行重复来样,否则会招致严重的过拟合,过采样法的代表性算法 SMOTE  是通过对训练集里的正例进行插值来产生额外的正例。策略为合成新的少数样本的策略是,对每个少类a样本,从最近邻中随机选一个样本b,在a、b之间连线上随机选一点作为合成新样本。

参考:周志华--机器学习

猜你喜欢

转载自blog.csdn.net/qq_21840201/article/details/81168295