1. 程式人生 > >精確率、召回率、F1 值、ROC、AUC 各自的優缺點是什麼?

精確率、召回率、F1 值、ROC、AUC 各自的優缺點是什麼?

精確率、召回率、F1、AUC和ROC曲線其實都是評價模型好壞的指標,而且相互之間是有關係的,只是側重點不同,題主如果理解了各指標的定義就能找出他們的區別與聯絡,下面就用一個例子解釋這些指標。

以白條的逾期預測模型為例,這是一個有監督的二分類模型,模型對每個樣本的預測結果為一個概率值,我們需要從中選取一個閾值來區分好使用者和壞使用者。

如果我們已經定好了一個閾值,超過此閾值定義為壞使用者(1),低於此閾值定義為好使用者(0),就可以計算出混淆矩陣(Confusion matrix)。

<img src="https://pic2.zhimg.com/50/v2-813259ce9351c1b65c17cbcd83562ef2_hd.jpg" data-rawwidth="504" data-rawheight="192" class="origin_image zh-lightbox-thumb" width="504" data-original="https://pic2.zhimg.com/v2-813259ce9351c1b65c17cbcd83562ef2_r.jpg">

根據混淆矩陣我們可以得到TP,FN,FP,TN四個值,TP即為預測正確的壞使用者的個數,FN為預測錯誤(預測為好使用者)的壞使用者個數,根據這四個值即可計算精確率、召回率和F1。

精確率(Precision)為TP/(TP+FP),即為在預測為壞人的人中,預測正確(實際為壞人)的人佔比。

召回率(Recall)為TP/(TP+FN),即為在實際為壞人的人中,預測正確(預測為壞人)的人佔比。

F1值是精確率和召回率的調和均值,即F1=2PR/(P+R),相當於精確率和召回率的綜合評價指標。

另外還有Fα值,為F1值的變體, Fα=(α^2+1)PR/(α^2 P+R) ,利用α給P和R賦予不同的權重,若α=1則為F1值。

接著來說ROC曲線(Receiver operating characteristic curve),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曲線。

<img src="https://pic4.zhimg.com/50/v2-2d9516a1b1ce2d9974b26349146ad6ac_hd.jpg" data-rawwidth="280" data-rawheight="267" class="content_image" width="280">

在畫ROC曲線的過程中,若有一個閾值,高於此閾值的均為壞人,低於此閾值的均為好人,則認為此模型已完美的區分開好壞使用者。此時壞使用者的預測準確率(TPR)為1,同時好使用者的預測錯誤率(FPR)為0,ROC曲線經過(0,1)點。

AUC(Area Under Curve)的值為ROC曲線下面的面積,若如上所述模型十分準確,則AUC為1。

但現實生活中尤其是工業界不會有如此完美的模型,一般AUC均在0.5到1之間,AUC越高,模型的區分能力越好,上圖AUC為0.81。

若AUC=0.5,即與上圖中紅線重合,表示模型的區分能力與隨機猜測沒有差別。若AUC真的小於0.5,請檢查一下是不是好壞標籤標反了,或者是模型真的很差。。。

也有人會用Gini係數來評價模型,其實Gini係數與AUC所表示的意義相同,只是計算方式不同。Gini係數指ROC曲線與中線(上圖紅線)圍成的面積和中線(上圖紅線)之上的面積(0.5)的比例,兩者之間換算公式為Gini=2*AUC-1。

除此之外,在評價模型時還會用到KS(Kolmogorov-Smirnov)值,KS=max(TPR-FPR),即為TPR與FPR的差的最大值,KS值可以反映模型的最優區分效果,此時所取的閾值一般作為定義好壞使用者的最優閾值。

上圖ROC曲線的KS值為0.45,此時TPR=0.79,FPR=0.34。

當然,閾值的選取還要考慮應用場景及業務要求,對於FPR不敏感而對TPR敏感的場景,可以適當減少閾值以增加TPR。

如精準營銷領域的商品推薦模型,模型目的是儘量將商品推薦給感興趣的使用者,若使用者對推薦的商品不感興趣,也不會有很大損失,因此此時TPR相對FPR更重要。

再比如反欺詐領域的欺詐預測模型,由於模型結果會對識別的壞人進行一定的處置措施,FPR過高會對好人有一定干擾,造成誤殺,影響客戶體驗,因此模型需保證在低於一定FPR的基礎上儘量增加TPR。

瞭解了這些指標定義後可以發現,對於分類模型,AUC、KS、ROC曲線是綜合評價模型區分能力和排序能力的指標,而精確率、召回率和F1值是在確定最佳閾值之後計算得到的指標。

當然,PR曲線(Precision-Recall curve)和ROC曲線類似,ROC曲線是FPR和TPR的點連成的線,PR曲線是準確率和召回率的點連成的線,如下圖所示。

<img src="https://pic3.zhimg.com/50/v2-8044d34a29df54f1c57acba1bf140d2e_hd.jpg" data-rawwidth="305" data-rawheight="287" class="content_image" width="305">

我們又知道,Recall=TPR,因此PRC的橫座標為ROC的縱座標。

TPR、FPR、Precision、Recall的定義來對比,TPR、Recall的分母為樣本中壞客戶的個數,FPR的分母為樣本中好客戶的個數,樣本一旦確定分母即為定值,因此三個指標的變化隨分子增加單調遞增。

但是Precision的分母為預測為壞客戶的個數,會隨著閾值的變化而變化,因此Precision的變化受TP和FP的綜合影響,不單調,變化情況不可預測。

而且TP和FP的值分別受樣本中好壞客戶個數的制約,若樣本極不均衡,比如好客戶過多,則隨Recall的增加,FP會遠大於TP的值,Precision會變化很大。

相對來講ROC曲線會穩定很多,在正負樣本量都足夠的情況下,ROC曲線足夠反映模型的判斷能力。

因此,對於同一模型,PRC和ROC曲線都可以說明一定的問題,而且二者有一定的相關性,如果想評測模型效果,也可以把兩條曲線都畫出來綜合評價。

對於有監督的二分類問題,在正負樣本都足夠的情況下,可以直接用ROC曲線、AUC、KS評價模型效果。在確定閾值過程中,可以根據Precision、Recall或者F1來評價模型的分類效果。

對於多分類問題,可以對每一類分別計算Precision、Recall和F1,綜合作為模型評價指標。

當然,評價模型的指標不止以上幾種,同時對於不同的應用場景及業務要求會有不同的側重,根本上需要根據建模目的進行具體分析。

本文作者:ZRobot金融科技公司資料科學家 崔雅麗