多分類評估 - macro F1和micro F1計算方式與適用場景


1. 原理介紹

1.1 簡介

macro F1和micro F1是2種多分類的效果評估指標

1.2 舉例說明計算方法

假設有以下三分類的testing結果:

label:A、B、C

sample size:9

1.2.1 F1 score

[公式]

下面計算各個類別的准召:

對於類別A:

precision = 2/(2+0) = 100%

recall = 2/(2+2) = 50%

對於類別B:

 

precision = 2/(2+2) = 50%

recall = 2/(2+1) = 67%

對於類別C:

precision= 1/(1+2) = 33%

recall = 1/(1+1) = 50%

TN對於准召的計算而言是不需要的,因此上面的表格中未統計該值。

下面調用sklearn的api進行驗證:

from sklearn.metrics import classification_report print(classification_report([0,0,0,0,1,1,1,2,2], [0,0,1,2,1,1,2,1,2])) precision recall f1-score support 0 1.00 0.50 0.67 4 1 0.50 0.67 0.57 3 2 0.33 0.50 0.40 2 avg / total 0.69 0.56 0.58 9

可以看出,各個類別的准召計算完全一致。

1.2.2 Micro F1

micro f1不需要區分類別,直接使用總體樣本的准召計算f1 score。

對於樣本整體:

precision = 5/(5+4) = 0.5556

recall = 5/(5+4) = 0.5556

F1 = 2 * (0.5556 * 0.5556)/(0.5556 + 0.5556) = 0.5556

下面調用sklearn的api進行驗證

from sklearn.metrics import f1_score f1_score([0,0,0,0,1,1,1,2,2], [0,0,1,2,1,1,2,1,2],average="micro") 0.5555555555555556

可以看出,計算結果也是一致的(保留精度問題)。

1.2.3 Macro F1

不同於micro f1,macro f1需要先計算出每一個類別的准召及其f1 score,然后通過求均值得到在整個樣本上的f1 score。

類別A的​:

[公式]

類別B的​:

[公式]

類別C的​:

[公式]

整體的f1為上面三者的平均值:

F1 = (0.6667 + 0.57265 + 0.39759)/3 = 0.546

調用sklearn的api進行驗證:

from sklearn.metrics import f1_score f1_score([0,0,0,0,1,1,1,2,2], [0,0,1,2,1,1,2,1,2],average="macro") 0.546031746031746

可見,計算結果正確。 

2. 適用場景

micro-F1

計算方法:計算所有類別總的Precision和Recall,然后算F1值;

效果特點:考慮不同類樣本數量,當樣本不均衡時,更容易受到常見類別的影響

適用場景:注重樣本真實分布,只考慮全局效果

marco-F1

計算方法:單獨計算每個類別的F1值,然后取各類F1的平均值;

效果特點:不考慮不同類樣本數量,1)相對更考慮稀有類別的影響;2)會相對受高precision和高recall類的影響較大

適用場景:樣本不均衡,且各個類別同等重要的情況,可保障小樣本的性能 

3. 參考

https://zhuanlan.zhihu.com/p/64315175

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM