我有一个类不平衡的多类分类问题。我搜索了评估模型的最佳指标。Scikit-learn 有多种计算 F1 分数的方法。我想了解这些差异。
当班级不平衡时,您有什么建议?
我有一个类不平衡的多类分类问题。我搜索了评估模型的最佳指标。Scikit-learn 有多种计算 F1 分数的方法。我想了解这些差异。
当班级不平衡时,您有什么建议?
F1Score 是使用公式评估预测器性能的指标
F1 = 2 * (精度 * 召回率) / (精度 + 召回率)
在哪里
召回率 = TP/(TP+FN) 准确率 = TP/(TP+FP)
并记住:
当您有一个多类设置时,函数中的平均参数需要是以下之一:f1_score
第一个,'weighted'独立计算每个类的 de F1 分数,但是当它将它们加在一起时,使用取决于每个类的真实标签数量的权重:
因此偏向于多数阶层。
'micro'使用 TP, FN, FP 的全局数,直接计算 F1:
不特别偏爱任何阶级。
最后,“宏”计算按类分隔的 F1,但不使用权重进行聚合:
当您的模型在少数类中表现不佳时,这会导致更大的惩罚。
使用哪个取决于您想要实现的目标。如果您担心班级不平衡,我建议您使用'macro'。然而,实施一些可用于解决不平衡问题的技术可能也是值得的,例如对多数类进行下采样、对少数类进行上采样、SMOTE 等。
希望这可以帮助!