在分类问题中,精度、召回率、准确率、F1分数、ROC曲线和AUC都是常用的评估指标。然而,当数据集中存在类别不平衡问题时,这些指标可能会失去参考价值。例如,在一个包含1000个样本的数据集中,只有2个样本被标记为“阳性”,即使一个简单的分类器总是预测“负面”标签,其准确率也能达到99.8%。

类别不平衡问题

类别不平衡问题是指数据集中不同类别的样本数量差异很大。这在医疗诊断、信用卡欺诈检测等领域较为常见,并会导致机器学习模型偏向多数类别,从而在少数类别上表现不佳。

解决类别不平衡问题的方法

解决类别不平衡问题的方法有很多,包括:

  • 类别权重调整: 对不同类别的样本赋予不同的权重,以平衡其在模型训练中的影响。
  • 过采样: 通过复制少数类别样本或生成新的少数类别样本来增加其数量。
  • 欠采样: 通过删除多数类别样本或合并相似的多数类别样本来减少其数量。
  • SMOTE算法: 一种过采样技术,通过合成新的少数类别样本来平衡数据集。

类别权重处理

在Scikit-learn等机器学习库中,可以通过设置class_weight参数来调整类别权重。默认情况下,类别权重为None,表示所有类别具有相同的权重。

可以使用balanced模式自动根据类别频率分配权重,或者使用字典形式手动指定每个类别的权重,例如{'class_label': weight}