在机器学习中,我们常常会遇到不均衡的数据集。比如癌症数据集中,癌症样本的数量可能远少于非癌症样本的数量;在银行的信用数据集中,按期还款的客户数量可能远大于非癌症样本的数量。
如果不做任何处理简单地进行训练,那么训练结果中(以SVM为例),大部分好客户(约97%)能被正确地识别为好客户,但是大部分的坏客户(约95%)却会被识别为好客户。这个时候,如果我们仅仅使用accuracy来评价模型,那么银行可能会承受违约带来的巨大损失。在南大周志华老师的《机器学习》“模型的选择与评价”部分中,就提到了使用Precision、Recall、F1 Score(加权平均Precision和Recall)等更全面评价模型的方法。本文将探讨如何解决机器学习中遇到的分类非均衡问题:
- 过采样 Over-sampling
- 下采样 Under-sampling
- 上采样与下采样结合
- 集成采样 Ensemble sampling
- 代价敏感学习 Cost-Sensitive Learning
过采样 Over-sampling
过采样即是将本来数量少的那类样本增加。目前比较常见的方法包含了SMOTE, ADASYN, SVM SMOTE,bSMOTE。
我可视化了一下结果:比如说在下图中,蓝色三角形代表的是多数样本(不妨设为正例),绿色三角形代表的是原始的少数样本(不妨设为反例),而红色圆点则是使用SMOTE算法生成的反例。
不过,SMOTE在一些情况下表现得并不是特别好,也不是很稳定,这也与它本身的算法思路有关。我们可以对比一下在下面情况下SMOTE和ADASYN的表现:
但ADASYN也不是完美无缺的——当分割两个类别样本能够清晰地被划分而且数据点间隔很大时ADASYN会出现NaN。例如在以下的情况,ADASYN就很可能会出问题:
下采样 Under-sampling
下采样即是将本来数量多的那类样本减少。随机下采样就不用说了,实现非常简单。但它的表现并不是很好,因此又有了一些新方法,比较知名的有:
上采样与下采样结合
顾名思义,将原本比较多的样本所属类别的样本减少,同时也将原本属于少数的样本类别中的样本增加。
集成采样 Ensemble sampling
在论文中,作者提到,EasyEnsemble的思想有一部分与Balanced Random Forests相似,但是EasyEnsemble使用了样本来随机训练决策树。
代价敏感学习 Cost-Sensitive Learning