当前位置: 首页 > 工具软件 > TP-Micro > 使用案例 >

micro-F1和macro-F1评价指标的理解

萧亦
2023-12-01

一、问题背景

  在做多标签分类问题的时候,我发现很多论文用的评价指标是micro-F1,由于之前较少遇到这个评价指标,于是想仔细调研下为什么用micro-F1而不用macro-F1的原因。

二、实际原因

  首先micro-F1是指的微F1,计算方式,将这个多标签分类看成是n个二分类,因此就有n个混淆矩阵,然后就可以计算出n个类别的TP、FP、FN,从而求和得到整体的TP_all、FP_all、FN_all,这样再求出整体的Precisoin和Recall,进而求出micro-F1值;同样,macro-F1恰恰是将所有类的F1先求出来,然后直接计算F1_n的算术平均;
  从计算方法上来看,微F1值会受到数量多一类的样本的影响较大,而宏F1易受到高准或高召样本类的影响(因为它是平等的看待每一类);
  见下方举个多标签分类的例子,

多标签分类中存在5种label(A/B/C/D/E):
predict:[0,0,1,0,1]、[0,1,1,0,1]、[1,0,1,1,1]、[1,0,1,0,0]
label:[0,0,1,1,1]、[1,1,1,1,0]、[0,1,1,0,1]、[1,0,1,0,0]
计算过程如下:
accuracy           =      0.250
micro_precision    =      0.667
micro_recall       =      0.727
micro-F1           =      0.696

macro_precision    =      0.600
macro_recall       =      0.633
macro-F1           =      0.593

weighted_precision =      0.773
weighted_recall    =      0.727
weighted-F1        =      0.733

因此在多分类的情况下,我们具体选用哪个指标,我们需要根据我们任务的数据集中不同类的数量分布来决定:

  1. 通常情况下,若数据集各类别数据量是不平衡的且所有类别都是同样重要,那用macro-F1就行,因为它是按类别计算,再取平均的F1作为最后值。大多数应该就是这种情况了(micro-F1在极度不平衡数据下会≈数据量大的那一类F1,不能很好的衡量模型的整体效果)。
  2. 若是在一个非平衡的数据集上,你个人希望侧重于一些类,那当然是weighted-F1 了(这个相当于就是macro-F1的加权平均,权重则是各类的数量占总体数量的权重)。
  3. 若是平衡的数据集,且是忽略类别的情况那就用micro-F1好了
 类似资料: