机器学习/深度学习中的类别不均衡问题及处理方法

类别不均衡问题

数据的类别不平衡(class imbalance),也叫数据偏斜(class skew)。

以常见的二分类问题(是和否两类)为例,我们希望预测病人是否得了某种罕见疾病。但在历史数据中,阳性的比例可能很低(如0.1%)。在这种情况下,学习出好的分类器是很难的,而且在这种情况下得到结论往往也是很具迷惑性的。例如,若分类器总是预测一个人未患病,即预测为反例,那么我们依然有高达99.9%的预测准确率。然而这种结果是没有意义的。那么如何在类别不平衡的情况下有效地训练并评估分类器?

我们最终希望解决的问题是:在数据偏斜的情况下,如何训练一个性能较好的分类器?是否可以找到一个较为简单的解决方法,而规避复杂的模型、数据处理,降低我们的工作量。

解决方案

  1. 采样
    总体上可以分为过采样和降采样两种,简言之就是将少类别样本增加,或者将多类别样本减少。
  • 过采样方法如SMOTE算法。
  • 采用聚类+采样:先对数据进行聚类,然后对大的簇进行欠采样或对小的簇进行数据生成。
  1. 问题转化
  • 转为一分类(one class classification)问题
  • 转为异常检测(novelty detection)问题
    多分类问题的重点是捕捉类间差别,而转为一分类或异常检测的问题后,重点在于为这一类进行建模,如one-class SVM。
  1. 模型惩罚
    增大少类的权重,减小多类的权重
  2. 使用其他模型
    使用一些如bagging或boosting的方法,样本不均衡时适合使用集成学习。
  3. 采用合适的评价指标
  • 对于平衡的数据一般使用准确率(accuracy),也就是(1-误分率)作为一般的评估标准。这种标准的默认假设前提是:“数据是平衡的,正例与反例的重要性一样,二分类器的阈值是0.5。”在这种情况下,用准确率来对分类器进行评估是合理的。
  • 当类别不平衡时,采用准确率评价就很具有迷惑性且意义不大。
  • 对于类别不均衡问题的评价指标可以采用:如采用AUC或ROC评价,这两个指标对类别不均衡不敏感。

参考

知乎:如何处理数据中的「类别不平衡」?
:机器学习中的样本不平衡问题

你可能感兴趣的:(机器学习/深度学习中的类别不均衡问题及处理方法)