宏观 F1 分数 VS 微观 F1 分数 VS 加权 F1 分数 VS 样本 F1 分数

38

在sklearn.metrics.f1_score中,F1分数有一个名为“average”的参数。什么是宏平均、微平均、加权和样本?请详细解释,因为在文档中没有很好地解释。或者简单回答以下问题:

  1. 为什么“samples”是多标签分类的最佳参数?
  2. 为什么对于不平衡数据集,微平均(micro)是最佳参数?
  3. 加权平均(weighted)和宏平均(macro)之间有什么区别?

我已经尝试过了,没有任何输出。 - Code Geek
1
仔细阅读sklearn.metrics.f1_score函数的文档,你就能得到答案。 - abunickabhi
3
抱歉,但我是这么做的。“因为文档没有被恰当地解释”。 - Code Geek
你在哪里看到了“微调适用于不平衡数据”和“样本适用于多标签分类”的说法? - Thibault D.
您的问题答案在这里:https://datascience.stackexchange.com/a/24051/17844 - Kirill Dolmatov
2个回答

61
这个问题是关于在 sklearn.metrics.f1_scoreaverage 参数的含义。
代码可以看到:
  • average=micro 表示函数通过计算总的真正例、假反例和假正例来计算 F1 值(不考虑数据集中每个标签的预测)
  • average=macro 表示函数分别计算每个标签的 F1 值,并返回不考虑数据集中每个标签的比例的平均值。
  • average=weighted 表示函数分别计算每个标签的 F1 值,并返回考虑数据集中每个标签的比例的平均值。
  • average=samples 表示函数为每个实例计算 F1 值,并返回平均值。用于多标签分类。

7
我发现一篇详细解释了这些差异并提供了例子的有用文章:https://towardsdatascience.com/multi-class-metrics-made-simple-part-ii-the-f1-score-ebe8b2c2ca1 不幸的是,它没有涉及“样本”参数,并且我还没有尝试过多标签分类,所以无法回答问题1。至于其他问题:
1. 这些信息从哪里得来的?如果我正确理解差异,micro不是不均衡数据集的最佳指标之一,而是最差之一,因为它不包括比例。正如文章中所描述的那样,micro-f1等于准确性,这是不适合不平衡数据的缺陷指标。例如:分类器应该在成千上万张随机图片中识别猫图片,数据集只有1%是猫图片(不平衡数据集)。即使它没有识别出任何一张猫图片,它的准确率/微观f1分数也为99%,因为99%的数据被正确地识别为非猫图片。
2. 简言之,Macro是各自得分的算术平均值,而Weighted包括各自样本的大小。我建议阅读文章获取详细信息,如果需要,我可以提供更多例子。
我知道这个问题相当老了,但我希望这可以帮助某些人。如果我有错,请纠正我。我做了一些研究,但不是专家。

"微平均值不是衡量数据集不平衡的最佳指标",这并非总是正确的。您可以将负标签排除在微平均之外。例如,sklearn f1_score函数提供了labels/pos_label参数来控制此问题。在许多自然语言处理任务中,如命名实体识别(NER),微平均f1始终是最好的度量标准。 - Bugface

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接