最近在看機器學習的,要理解准確率、精確率、召回率的含義,首先要理解 TP、FN、FT 和 TN 的含義。 TP、FN、FT 和 TN 這幾個概念一直搞得不太清楚。記錄一下。看了別人的文章,舉的例子不是太好,不太容易理解 。
假設有100個人,實際上50個人喝酒了,50個人沒喝。我們有一個判定是否喝酒的模型,通過這個模型我們的判定結果如下:
60個人喝了(其中 40 個人是真正喝了酒的); 40 個人沒喝(其中10個人其實是喝了的)。
那么前面 4個名詞中,第一個字母 T 和 F 表示的意思是我們預測的是不是正確。預測是喝了酒的為 P,預測沒喝酒的為N。那么此例中這個概念的混淆矩陣如下:
TP: 預測喝了酒(P),實際喝了酒,預測正確(T)
FP: 預測喝了酒(P),實際沒喝酒,預測錯誤(F)
FN: 預測沒喝酒(N),實際喝了酒,預測錯誤(F)
TN: 預測沒喝酒(N),實際沒喝酒,預測正確(T)
那么:
准確率(Accuracy): 就是判斷正確的占總數的比例。
Accuracy=(TP+TN) / (TP+FP+TN+FN) = (40+30)/100 = 70%
雖然准確率能夠判斷總的正確率,但是在樣本不均衡的情況下,並不能作為很好的指標來衡量結果。
比如在樣本集中,正樣本有90個,負樣本有10個,樣本是嚴重的不均衡。對於這種情況,我們只需要將全部樣本預測為正樣本,就能得到90%的准確率,但是完全沒有意義。對於新數據,完全體現不出准確率。因此,在樣本不平衡的情況下,得到的高准確率沒有任何意義,此時准確率就會失效。所以,我們需要尋找新的指標來評價模型的優劣。
精確率(Precision): 是針對預測結果而言的,其含義是在被所有預測為正的樣本中實際為正樣本的概率。精確率代表對正樣本結果中的預測准確程度。
P=TP / (TP+FP) = 40/(40+20) = 66.7% 此例中表示預測喝酒的人數中有多少人是真正喝酒的比例。
召回率(Recall): 召回率是覆蓋面的度量。衡量了分類器對正例的識別能力。也叫查全率。
R=TP / (TP+FN)= 40/(40+10) = 80% 此例中表示我們預測出的喝酒的人數占真正喝酒的人數的比例。
綜合評價指標:
精確率和召回率又被叫做查准率和查全率,可以通過P-R圖進行表示
如何理解P-R(精確率-召回率)曲線呢?或者說這些曲線是根據什么變化呢?
以邏輯回歸舉例,其輸出值是0-1之間的數字。因此,如果我們想要判斷用戶的好壞,那么就必須定一個閾值。比如大於0.5指定為好用戶,小於0.5指定為壞用戶,然后就可以得到相應的精確率和召回率。但問題是,這個閾值是我們隨便定義的,並不知道這個閾值是否符合我們的要求。因此為了尋找一個合適的閾值,我們就需要遍歷0-1之間所有的閾值,而每個閾值都對應一個精確率和召回率,從而就能夠得到上述曲線。
根據上述的P-R曲線,怎么判斷最好的閾值點呢?首先我們先明確目標,我們希望精確率和召回率都很高,但實際上是矛盾的,上述兩個指標是矛盾體,無法做到雙高。因此,選擇合適的閾值點,就需要根據實際問題需求,比如我們想要很高的精確率,就要犧牲掉一些召回率。想要得到很高的召回率,就要犧牲掉一些精准率。因此我們就需要綜合考慮他們,最常見的方法就是F-Measure(又稱為F-Score)。
F-Measure是Precision和Recall加權調和平均:
當a 取 1時,就是 F1分數(F1-Score)。F1分數同時考慮精確率和召回率,讓兩者同時達到最高,取得平衡。
另外 Roc 、AUC 曲線見 https://weizhixiaoyi.com/archives/275.html