计算平均 F1 分数的正确方法是什么?

数据挖掘 范围
2021-10-04 11:11:23

我有一组 10 个实验,用于计算每个实验的精度、召回率和 f1 分数。现在,平均精度和平均召回率很容易计算。我对平均 f1 分数有些困惑。

有两种方法可以计算平均 f1 分数:

  1. 对 10 个实验中的每一个取 f1 分数并计算它们的平均值。
  2. 取平均精度和平均召回率,然后使用公式计算 f1-scoref1 = 2*p*r/(p+r)

我找不到任何强有力的参考来支持任何论点。我能找到的最接近的文件是:https ://www.kaggle.com/wiki/MeanFScore

任何人都可以通过一些参考(如果可能的话)解释哪些方法是正确的,为什么?

编辑:其中一位成员建议了这个来源。不过,我仍然怀疑消息来源的可靠性。我看到人们在他们的研究出版物中没有使用上述方法。(即使我会在我的一份出版物中使用它)我希望社区的更多意见来验证这个想法。

3个回答

这篇论文Apples-to-apples in cross-validation studies: Forman 和 Scholz 的分类器性能测量中的陷阱讨论了在交叉验证中计算平均 F-score 的不同方法。该论文表明,在非常高的类不平衡下,某些计算方法(单个折叠 F 分数的平均值或基于单个折叠精度和召回率的平均值的 F 分数)可能导致有偏差的结果。论文建议通过将每个折叠的 TP、FP、FN 相加来计算 F-score,计算精度和召回率,最后计算 F-score。

正如其他用户所提到的,解决方案不是很清楚。一般的方法是遵循这里提到的内容。

另外,正如一位资深研发人员和我的导师所建议的那样,实践中的方法是将平均 f1-score 计算为平均准确率和平均召回率的 HM。

这肯定取决于您的用例以及您如何计算指标(微观/宏观)。

正如您所观察到的,人们可以为您的任何定义争论。用“平均 F1 分数”记录您的意思是最重要的。您还应该考虑这两个选项中的哪一个提供了更有意义的评估。这取决于您的特定应用程序或任务。

在我看来,“平均 F1 分数”显然意味着您计算单个 F1 分数的平均值。在某些情况下,选项 2 可以描述为整体 F1 分数。这取决于您要汇总的内容。“平均精度和召回率的 F1 分数”可能是对选项 2 的一个很好的一般描述。