文章來自:一個寶藏微信公眾號【機器學習煉丹術】
基本概念
首先,要背住的幾個概念就是: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