文章轉自【機器學習煉丹術】機器學習
首先,要背住的幾個概念就是:accuracy,precision,recal, TP,FP,TN,FN學習
一般咱們會作出這樣的一個混淆矩陣:
左邊的positive,negative表示樣本真實值,表格上邊的positive,negative表示樣本的預測結果。測試
如今咱們有這樣的一個例子:
圖中的TP,FP等是一個比例,假設總共有100個樣本,有40個是TP,有20個是FP……(不過混淆矩陣通常不用除以總樣本數量)spa
如今咱們有了
$TP=0.3,FP=0.1$
$TN=0.4,FN=0.2$blog
準確率是指,對於給定的測試數據集,分類器正確分類的樣本書與總樣本數之比,也就是預測正確的機率。ci
對應上面的例子,能夠獲得Accuracy=0.7。rem
【準確率Accuracy的弊端】get
準確率做爲咱們最經常使用的指標,當出現樣本不均衡的狀況時,並不能合理反映模型的預測能力。例如測試數據集有90%的正樣本,10%的負樣本,假設模型預測結果全爲正樣本,這時準確率爲90%,然而模型對負樣本沒有識別能力,此時高準確率不能反映模型的預測能力。it
表示預測爲正的樣本中,實際的正樣本的數量。io
對應上面的例子,$precision=\frac{0.3}{0.3+0.1}=0.75$。
【我的理解】
Precision是針對預測結果而言的。預測結果中,預測爲正的樣本中預測正確的機率。相似於一個考生在考卷上寫出來的答案中,正確了多少。體現模型的精準度,模型說:我說哪一個對哪一個就是對的。
Recall表示實際爲正的樣本被判斷爲正樣本的比例
對應上述的例子,獲得$Recall=\frac{0.3}{0.3+0.2}=0.6$
【我的理解】
Recall是針對數據樣本而言的。數據樣本中,正樣本中預測正確的機率。相似於一個考生在考卷上回答了多少題。體現一個模型的全面性,模型說:全部對的我都能找出來。
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則更容易受到常見類別的影響。
參考: