常见的类别不平衡问题解决方法
通常的分类学习方法中都有一个共同的假设,即不同类别的训练样例数目相同。如果不同类别的训练样例数目稍有差别,通常对分类影响不大,但是若差别很大,则会对学习造成影响,测试结果非常差。例如二分类问题中有998个反例,正例有2个,那么学习方法只需返回一个永远将新样本预测为反例的分类器,就能达到99.8%的精度;然而这样的分类器没有价值,我们必须要解决这个问题。
那么,什么是“类别不平衡”?
类别不平衡(class-imbalance)是指分类任务中不同类别的训练样例数目差别很大的情况。
在现实的分类任务中,我们会经常遇到类别不平衡的问题。例如,在银行信用欺诈交易识别中,属于欺诈交易的应该是很少部分,绝大部分交易是正常的,这就是一个正常的类别不平衡问题。一般而已,如果类别不平衡比例超过4:1,那么其分类器会大大地因为数据不平衡性而无法满足分类要求的。因此在构建分类模型之前,需要对分类不平衡性问题进行处理。
解决方法
1、扩大数据集
当遇到类别不均衡问题时,首先应该想到,是否可能再增加数据(一定要有小类样本数据),更多的数据往往战胜更好的算法。因为机器学习是使用现有的数据对整个数据的分布进行估计,因此更多的数据往往能够得到更多的分布信息。即使再增加小类样本数据时,又增加了大类样本数据,也可以使用放弃一部分大类数据(即对大类数据进行欠采样)来解决。
2、欠采样
欠采样(under-sampling):对大类的数据样本进行采样来减少该类数据样本的个数,使其与其他类数目接近,然后再进行学习。欠采样若随机丢弃大类样本,可能会丢失一些重要信息。
欠采样的代表算法是EasyEnsemble:利用集成学习机制,将大类划分为若干个集合供不同的学习器使用。这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要信息。
3、过采样
过采样(over-sampling ):对小类的数据样本进行采样来增加小类的数据样本个数。
过采样的代表算法是SMOTE