一文解释Micro-F1, Macro-F1,Weighted-F1

目录

  • 摘要
  • F1
  • macro -f1
  • weighted-f1
  • micro-f1
  • one more thing
  • 参考文献

摘要

  本文用通俗易懂的形式解释多分类任务中的micro-f1,macro-f1,weighted-f1。前提需要知道基本的概念如精确率、召回率。

F1

  我们使用一个分类例子来解释F1。假设我们有一个图像分类模型,模型可以将图片分类为飞机、船和汽车,这是个三分类任务。现在我们使用这个模型对十张图片进行分类,分类结果如下:
一文解释Micro-F1, Macro-F1,Weighted-F1_第1张图片
  根据上面的预测结果可以得到下表。
一文解释Micro-F1, Macro-F1,Weighted-F1_第2张图片
  根据上表可以计算每个类别的TP,FP,FN,精确率,召回率,F1:
一文解释Micro-F1, Macro-F1,Weighted-F1_第3张图片
  单个类的指标无法反映模型的整体性能,我们需要综合每个类别的指标,接下来我们将讨论如何综合每个类别的指标来整体反映模型的性能。

macro -f1

  macro-f1 是对每类F1分数计算算术平均值,该方法平等地对待所有类,而不考虑不同类别的重要性。
一文解释Micro-F1, Macro-F1,Weighted-F1_第4张图片

weighted-f1

  weighted-f1考虑了不同类别的重要性,也就是把每个类别的样本数量作为权重,计算加权f1。
一文解释Micro-F1, Macro-F1,Weighted-F1_第5张图片

micro-f1

  micro-f1通过计算全局的TP、FN和FP来计算F1分数。我们首先将所有类别的TP、FP和FN值相加,然后将它们代入F1方程中,得到我们的micro-f1分数。
一文解释Micro-F1, Macro-F1,Weighted-F1_第6张图片

one more thing

  前面我们计算了三种不同的f1分数,为了验证计算是否正确,我们和sklearn.metrics.classification_report的结算结果对比下:
一文解释Micro-F1, Macro-F1,Weighted-F1_第7张图片
  可以看到sklearn中macro avg和weighted avg的计算结果和我们的对应上了,但是没有micro avg的结果,这是为什么呢?再仔细观察下,发现图中的accuracy结果和micro-f1结果一致,这是巧合吗?

  这是因为micro-f1是计算所有样本中正确分类的比例(认真观察下micro-f1的计算公式),这个定义就是我们用来计算整体accuracy的。
此外,如果我们对精确率和召回率计算micro avg,我们将同样得到0.60。
一文解释Micro-F1, Macro-F1,Weighted-F1_第8张图片
  这些结果意味着,在多分类场景中,micro-f1、micro-precision、micro-recall和accuracy都相等(即本例中的0.60)。
这就解释了为什么sklearn分类报告只显示accuracy,因为micro-F1、micro-precision和micro-recall也具有相同的值。

  那么为什么会有如下等式存在呢?

micro-F1 = accuracy = micro-precision = micro-recall

  这是因为在某一类中的False Positive样本,一定是其他某类别的False Negative样本。听起来有点抽象?举个例子,比如说系统错把「car」预测成「boat」,那么对于car而言,其错误类型就是False Negative,对于boat而言,其错误类型就是False Positive。于此同时,Micro-precision和Micro-recall的数值都等于Accuracy,因为它们计算了对角线样本数和总样本数的比值。
  其实上面这一段才是我想写这篇博客的原因!!!

参考文献

https://www.cvmart.net/community/detail/2840

你可能感兴趣的:(NLP,机器学习,机器学习,micro-f1,macro-f1,weighted-f1,混淆矩阵)