1. 程式人生 > >【評價指標】詳解F1-score與多分類MacroF1&MicroF1

【評價指標】詳解F1-score與多分類MacroF1&MicroF1

文章來自:一個寶藏微信公眾號【機器學習煉丹術】 # 基本概念 首先,要背住的幾個概念就是:accuracy,precision,recal, TP,FP,TN,FN - TP:true positive。預測是正確的正樣本 - FP:false positive。預測是錯誤的正樣本 - TN:true negative。預測是正確的負樣本 - FP:false positive。預測是錯誤的負樣本 通常我們會做出這樣的一個混淆矩陣: ![](http://helloworld2020.net/wp-content/uploads/2020/07/wp_editor_md_9cb89fde6949def09e1b93f8f16f6fe7.jpg) 左邊的positive,negative表示樣本真實值,表格上邊的positive,negative表示樣本的預測結果。 現在我們有這樣的一個例子: ![](http://helloworld2020.net/wp-content/uploads/2020/07/wp_editor_md_f495f9cdb74c4e84f6c5691d71eb17a1.jpg) 圖中的TP,FP等是一個比例,假設總共有100個樣本,有40個是TP,有20個是FP……(不過混淆矩陣一般不用除以總樣本數量) 現在我們有了$TP=0.3,FP=0.1,TN=0.4,FN=0.2$ # 準確率Accuracy **準確率是指,對於給定的測試資料集,分類器正確分類的樣本書與總樣本數之比,也就是預測正確的概率。** ![](http://helloworld2020.net/wp-content/uploads/2020/07/wp_editor_md_e3ac0c1826bd94ae3f5b59c12e7a23ec.jpg) 對應上面的例子,可以得到Accuracy=0.7。 **【準確率Accuracy的弊端】** 準確率作為我們最常用的指標,當出現樣本不均衡的情況時,並不能合理反映模型的預測能力。例如測試資料集有90%的正樣本,10%的負樣本,假設模型預測結果全為正樣本,這時準確率為90%,然而模型對負樣本沒有識別能力,此時高準確率不能反映模型的預測能力。 # 精確率Precision **表示預測為正的樣本中,實際的正樣本的數量。** ![](http://helloworld2020.net/wp-content/uploads/2020/07/wp_editor_md_31bd3dd4d4f84f71da17e9463bc6d809.jpg) 對應上面的例子,$precision=\frac{0.3}{0.3+0.1}=0.75$。 **【個人理解】** Precision是針對預測結果而言的。預測結果中,預測為正的樣本中預測正確的概率。**類似於一個考生在考卷上寫出來的答案中,正確了多少。**體現模型的精準度,模型說:我說哪個對哪個就是對的。 # 召回率Recall **Recall表示實際為正的樣本被判斷為正樣本的比例** ![](http://helloworld2020.net/wp-content/uploads/2020/07/wp_editor_md_332c50f0bf41ee3aae839dd824c1ff12.jpg) 對應上述的例子,得到$Recall=\frac{0.3}{0.3+0.2}=0.6$ **【個人理解】** Recall是針對資料樣本而言的。資料樣本中,正樣本中預測正確的概率。**類似於一個考生在考卷上回答了多少題。**體現一個模型的全面性,模型說:所有對的我都能找出來。 # F1 score Precision和Recall是一對矛盾的度量,一般來說,Precision高時,Recall值往往偏低;而Precision值低時,Recall值往往偏高。當分類置信度高時,Precision偏高;分類置信度低時,Recall偏高。為了能夠綜合考慮這兩個指標,F-measure被提出(Precision和Recall的加權調和平均),即: ![](http://helloworld2020.net/wp-content/uploads/2020/07/wp_editor_md_f41970ed01d1ef63028648d826da2f5b.jpg) F1的核心思想在於,在儘可能的提高Precision和Recall的同時,也希望兩者之間的差異儘可能小。F1-score適用於二分類問題,對於多分類問題,將二分類的F1-score推廣,有Micro-F1和Macro-F1兩種度量。 **【Micro-F1】** 統計各個類別的TP、FP、FN、TN,加和構成新的TP、FP、FN、TN,然後計算Micro-Precision和Micro-Recall,得到Micro-F1。具體的說,統計出來各個類別的混淆矩陣,然後把混淆矩陣“相加”起來,得到一個多類別的混淆矩陣,然後再計算F1score **【Macro-F1】** 我感覺更常用的是Macro-F1。統計各個類別的TP、FP、FN、TN,分別計算各自的Precision和Recall,得到各自的F1值,然後取平均值得到Macro-F1 **【總結】** 從上面二者計算方式上可以看出,Macro-F1平等地看待各個類別,它的值會受到稀有類別的影響;而Micro-F1則更容易受到常見類別的影響。 參考: [1]http://zjmmf.com/2019/08/13/F1-Score%E8%AE%A1%E7%AE%97/ [2]https://zhuanlan.zhihu.com/p/49895905 ![](https://imgconvert.csdnimg.cn/aHR0cDovL2hlbGxvd29ybGQyMDIwLm5ldC93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8wNy8lRTklQkIlOTglRTglQUUlQTQlRTYlQTAlODclRTklQTIlOThfJUU1JThBJUE4JUU2JTgwJTgxJUU1JTg4JTg2JUU1JTg5JUIyJUU3JUJBJUJGXzIwMjAtMDctMjAtMC5naWY) ![](https://imgconvert.csdnimg.cn/aHR0cDovL2hlbGxvd29ybGQyMDIwLm5ldC93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8wNy93cF9lZGl0b3JfbWRfMzEyZGQyZDliYmNmZmNiZDk0Y2YwODlkYTE4YzVjNGEuanBn?x-oss-process=image/format,png) ![](https://imgconvert.csdnimg.cn/aHR0cDovL2hlbGxvd29ybGQyMDIwLm5ldC93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8wNy8lRTklQkIlOTglRTglQUUlQTQlRTYlOTYlODclRTQlQkIlQjYxNTk1MjUxNjIxMTEyLnBuZw?x-oss-process=image/for