在做多标签分类问题的时候,我发现很多论文用的评价指标是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
因此在多分类的情况下,我们具体选用哪个指标,我们需要根据我们任务的数据集中不同类的数量分布来决定: