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

忽逢桃林發表於2020-07-28

文章來自:一個寶藏微信公眾號【機器學習煉丹術】

基本概念

首先,要背住的幾個概念就是:accuracy,precision,recal, TP,FP,TN,FN

  • TP:true positive。預測是正確的正樣本
  • FP:false positive。預測是錯誤的正樣本
  • TN:true negative。預測是正確的負樣本
  • FP:false positive。預測是錯誤的負樣本

通常我們會做出這樣的一個混淆矩陣:

左邊的positive,negative表示樣本真實值,表格上邊的positive,negative表示樣本的預測結果。

現在我們有這樣的一個例子:

圖中的TP,FP等是一個比例,假設總共有100個樣本,有40個是TP,有20個是FP……(不過混淆矩陣一般不用除以總樣本數量)

現在我們有了\(TP=0.3,FP=0.1,TN=0.4,FN=0.2\)

準確率Accuracy

準確率是指,對於給定的測試資料集,分類器正確分類的樣本書與總樣本數之比,也就是預測正確的概率。

對應上面的例子,可以得到Accuracy=0.7。

【準確率Accuracy的弊端】
準確率作為我們最常用的指標,當出現樣本不均衡的情況時,並不能合理反映模型的預測能力。例如測試資料集有90%的正樣本,10%的負樣本,假設模型預測結果全為正樣本,這時準確率為90%,然而模型對負樣本沒有識別能力,此時高準確率不能反映模型的預測能力。

精確率Precision

表示預測為正的樣本中,實際的正樣本的數量。

對應上面的例子,\(precision=\frac{0.3}{0.3+0.1}=0.75\)

【個人理解】
Precision是針對預測結果而言的。預測結果中,預測為正的樣本中預測正確的概率。類似於一個考生在考卷上寫出來的答案中,正確了多少。體現模型的精準度,模型說:我說哪個對哪個就是對的。

召回率Recall

Recall表示實際為正的樣本被判斷為正樣本的比例

對應上述的例子,得到\(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的加權調和平均),即:

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計算/
[2]https://zhuanlan.zhihu.com/p/49895905



相關文章