機器學習效能指標精確率、召回率、F1值、ROC、PRC與AUC--周振洋
機器學習效能指標精確率、召回率、F1值、ROC、PRC與AUC
精確率、召回率、F1、AUC和ROC曲線都是評價模型好壞的指標,那麼它們之間有什麼不同,又有什麼聯絡呢。下面讓我們分別來看一下這幾個指標分別是什麼意思。
針對一個二分類問題,將例項分成正類(postive)或者負類(negative)。但是實際中分類時,會出現四種情況.
(1)若一個例項是正類並且被預測為正類,即為真正類(True Postive TP)
(2)若一個例項是正類,但是被預測成為負類,即為假負類(False Negative FN)
(3)若一個例項是負類,但是被預測成為正類,即為假正類(False Postive FP)
(4)若一個例項是負類,但是被預測成為負類,即為真負類(True Negative TN)
如下圖所示:
精確率(Precision)為TP/(TP+FP),即實際是正類並且被預測為正類的樣本佔所有預測為正類的比例,精確率更為關注將負樣本錯分為正樣本(FP)的情況。
召回率(Recall)為TP/(TP+FN),即實際是正類並且被預測為正類的樣本佔所有實際為正類樣本的比例,召回率更為關注將正樣本分類為負樣本(FN)的情況。
F1值是精確率和召回率的調和均值,即F1=2PR/(P+R) (P代表精確率,R代表召回率),相當於精確率和召回率的綜合評價指標。
有的時候,我們對recall 與 precision 賦予不同的權重,表示對分類模型的偏好:
可以看到,當 ,那麼就退回到了, 其實反映了模型分類能力的偏好, 的時候,precision的權重更大,為了提高,我們希望precision 越小,而recall 應該越大,說明模型更偏好於提升recall,意味著模型更看重對正樣本的識別能力; 而 的時候,recall 的權重更大,因此,我們希望recall越小,而precision越大,模型更偏好於提升precision,意味著模型更看重對負樣本的區分能力。
ROC曲線其實是多個混淆矩陣的結果組合,如果在上述模型中我們沒有定好閾值,而是將模型預測結果從高到低排序,將每個概率值依次作為閾值,那麼就有多個混淆矩陣。
對於每個混淆矩陣,我們計算兩個指標TPR(True positive rate)和FPR(False positive rate),TPR=TP/(TP+FN)=Recall,TPR就是召回率。FPR=FP/(FP+TN),FPR即為實際為負樣本的樣例中,預測為正的樣本所佔比例。我們以FPR為x軸,TPR為y軸畫圖,就得到了ROC曲線。 在畫ROC曲線的過程中,有一個閾值,高於此閾值的均為正樣本,低於此閾值的均為負樣本,則認為此模型已完美的區分開好壞使用者。此時壞使用者的預測準確率(TPR)為1,同時好使用者的預測錯誤率(FPR)為0,ROC曲線經過(0,1)點。 AUC(Area Under Curve)的值為ROC曲線下面的面積,若如上所述模型十分準確,則AUC為1(即ROC曲線為左邊的軸和上邊的軸)。一般AUC均在0.5到1之間,AUC越高,模型的區分能力越好,上圖AUC為0.81。若AUC=0.5,即與上圖中紅線重合,表示模型的區分能力與隨機猜測沒有差別。若AUC真的小於0.5,請檢查一下是不是好壞標籤標反了,或者是模型真的很差。 PRC曲線(Precision-Recall curve)和ROC曲線類似,ROC曲線是FPR和TPR的點連成的線,PRC曲線是準確率和召回率的點連成的線,如下圖所示。 除此之外,在評價模型時還會用到KS(Kolmogorov-Smirnov)值,KS=max(TPR-FPR),即為TPR與FPR的差的最大值,KS值可以反映模型的最優區分效果,此時所取的閾值一般作為定義好壞使用者的最優閾值。
TPR、FPR、Precision、Recall的定義來對比,TPR、Recall的分母為樣本中正樣本的個數,FPR的分母為樣本中負樣本的個數,樣本一旦確定分母即為定值,因此三個指標的變化隨分子增加單調遞增。但是Precision的分母為預測為正樣本的個數,會隨著閾值的變化而變化,因此Precision的變化受TP和FP的綜合影響,不單調,變化情況不可預測。 精確度的弊端在不均衡的樣本中體現的尤為明顯,比如有1000個樣本,其中10個負樣本,990個正樣本,那麼模型只要簡單的把所有的樣本都劃分為正樣本就可以獲得99%的正確率,但是這樣的劃分並沒有什麼意義。
相對來講ROC曲線會穩定很多,在正負樣本量都足夠的情況下,ROC曲線足夠反映模型的判斷能力。
因此,對於同一模型,PRC和ROC曲線都可以說明一定的問題,而且二者有一定的相關性,如果想評測模型效果,也可以把兩條曲線都畫出來綜合評價。
對於有監督的二分類問題,在正負樣本都足夠的情況下,可以直接用ROC曲線、AUC、KS評價模型效果。在確定閾值過程中,可以根據Precision、Recall或者F1來評價模型的分類效果。
對於多分類問題,可以對每一類分別計算Precision、Recall和F1,綜合作為模型評價指標。