对于多类分类问题,Sklearn F1 分数“微”和“加权”有什么区别?

数据挖掘 分类 scikit-学习 公制
2021-10-12 00:44:53

我有一个类不平衡的多类分类问题。我搜索了评估模型的最佳指标。Scikit-learn 有多种计算 F1 分数的方法。我想了解这些差异。

当班级不平衡时,您有什么建议?

1个回答

F1Score 是使用公式评估预测器性能的指标

F1 = 2 * (精度 * 召回率) / (精度 + 召回率)

在哪里

召回率 = TP/(TP+FN) 准确率 = TP/(TP+FP)

并记住:

在此处输入图像描述

当您有一个多类设置时,函数中的平均参数需要是以下之一:f1_score

  • '加权'
  • '微'
  • “宏观”

第一个,'weighted'独立计算每个类的 de F1 分数,但是当它将它们加在一起时,使用取决于每个类的真实标签数量的权重:

F1class1W1+F1class2W2++F1classNWN

因此偏向于多数阶层。

'micro'使用 TP, FN, FP 的全局数,直接计算 F1:

F1class1+class2+class3

不特别偏爱任何阶级。

最后,“宏”计算按类分隔的 F1,但不使用权重进行聚合:

F1class1+F1class2++F1classN

当您的模型在少数类中表现不佳时,这会导致更大的惩罚。

使用哪个取决于您想要实现的目标。如果您担心班级不平衡,我建议您使用'macro'然而,实施一些可用于解决不平衡问题的技术可能也是值得的,例如对多数类进行下采样、对少数类进行上采样、SMOTE 等。

希望这可以帮助!