类别不平衡是指分类任务中不同类别的训练样例数目差别很大的情况。
1、扩大数据集
2、欠采样
欠采样(under-sampling):对大类的数据样本进行采样来减少该类数据样本的个数,使其与其他类数目接近,然后再进行学习。
- 随机欠采样方法:通过改变多数类样本比例以达到修改样本分布的目的,从而使样本分布较为均衡,但是这也存在一些问题。对于随机欠采样,由于采样的样本集合要少于原来的样本集合,因此会造成一些信息缺失,即将多数类样本删除有可能会导致分类器丢失有关多数类的重要信息。
- 欠采样的代表算法是EasyEnsemble:利用集成学习机制,将大类划分为若干个集合供不同的学习器使用。这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要信息。
1)从多数类中有放回的随机采样n次,每次选取与少数类数目相近的样本个数。
2)将每一个多数类样本的子集与少数类样本合并并训练出一个模型,可以得到n个模型。
3)最终将这些模型组合形成一个集成学习系统,最终的模型结果是这n个模型的平均值。
- BalanceCascade算法基于Adaboost,将Adaboost作为基分类器
1)在每一轮训练时都使用多数类与少数类数量相等的训练集,训练出一个Adaboost基分类器。
2)使用该分类器对全体多数类进行预测,通过控制分类阈值来控制假正例率(False Positive Rate),将所有判断正确的类删除。
3)最后,进入下一轮迭代中,继续降低多数类数量。
3、过采样
过采样(over-sampling ):对小类的数据样本进行采样来增加小类的数据样本个数。
- 随机过采样方法:需要对少数类样本进行复制来扩大数据集,造成模型训练复杂度加大。另一方面也容易造成模型的过拟合问题,因为随机过采样是简单的对初始样本进行复制采样,这就使得学习器学得的规则过于具体化,不利于学习器的泛化性能,造成过拟合问题。
过采样的代表算法是SMOTE和ADASYN:
- SMOTE:通过对训练集中的小类数据进行插值来产生额外的小类样本数据。产生新的少数类样本,产生的策略是对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。
- ADASYN:基本思想是根据学习难度的不同,对不同的少数类别的样本使用加权分布,比较容易学习的少数类样本,对于难以学习的少数类的样本,产生更多的综合数据。 因此,ADASYN方法通过两种方式改善了对数据分布的学习:(1)减少类不平衡引入的偏差,(2)将分类决策边界自适应地转移到困难的样本。
4、代价敏感学习(cost-sensitive learning)
采样算法从数据层面解决不平衡数据的学习问题;在算法层面上解决不平衡数据学习的方法主要是基于代价敏感学习算法(Cost-Sensitive Learning),权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”(unequal cost)。
代价敏感学习方法:
- 1)从学习模型出发,对某一具体学习方法的改造,使之能适应不平衡数据下的学习,研究者们针对不同的学习模型如感知机、支持向量机、决策树、神经网络等分别提出了其代价敏感的版本。以代价敏感的决策树为例,可以从三个方面对其进行改造以适应不平衡数据的学习,这三个方面分别是决策阈值的选择方面、分裂标准的选择方面、剪枝方面,这三个方面都可以将代价矩阵引入。
- 2)从贝叶斯风险理论出发,把代价敏感学习看成是分类结果的一种后处理,按照传统方法学习到一个模型,以实现损失最小为目标对结果进行调整,优化公式如下所示。此方法的优点在于它可以不依赖所用的具体分类器,但是缺点也很明显,它要求分类器输出值为概率。
- 3)从预处理的角度出发,将代价用于权重调整,使得分类器满足代价敏感的特性。
5、使用新评价指标
1)混淆矩阵(Confusion Matrix):使用一个表格对分类器所预测的类别与其真实的类别的样本统计,分别为:TP、FN、FP与TN。由此计算精确率(precision)、召回率(recall)、F1值(F1 value)
2)ROC曲线(ROC Curves) 、AUC 、Kappa (Cohen kappa)。
G-Mean是另外一个指标,也能评价不平衡数据的模型表现:
6、尝试不同的分类算法
不同的算法适用于不同的任务与数据,应该使用不同的算法进行比较。