1. 程式人生 > >精確率(Precision)、召回率(Recall)、F1-score、ROC、AUC

精確率(Precision)、召回率(Recall)、F1-score、ROC、AUC

1. 基本概念

   
FN TP
TN FP

TP —— True Positive (真正, TP)被模型預測為正的正樣本;可以稱作判斷為真的正確率 
TN —— True Negative(真負 , TN)被模型預測為負的負樣本 ;可以稱作判斷為假的正確率 
FP ——False Positive (假正, FP)被模型預測為正的負樣本;可以稱作誤報率 
FN—— False Negative(假負 , FN)被模型預測為負的正樣本;可以稱作漏報率

True Positive Rate(真正率 , TPR)或靈敏度(sensitivity) 
   TPR = TP /(TP + FN) 
  正樣本預測結果數 / 正樣本實際數 
True Negative Rate(真負率 , TNR)或特指度(specificity) 
   TNR = TN /(TN + FP) 
  負樣本預測結果數 / 負樣本實際數 
False Positive Rate (假正率, FPR) 
  FPR = FP /(FP + TN) 
  被預測為正的負樣本結果數 /負樣本實際數 
False Negative Rate(假負率 , FNR) 
  FNR = FN /(TP + FN) 
  被預測為負的正樣本結果數 / 正樣本實際數

Precision:P=TP/(TP+FP) 精準率(查準率) 
Recall:R=TP/(TP+FN) 召回率(查全率 ) 
精確率是針對我們預測結果而言的,它表示的是預測為正的樣本中有多少是真正的正樣本。那麼預測為正就有兩種可能了,一種就是把正類預測為正類(TP),另一種就是把負類預測為正類(FP),而召回率是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。那也有兩種可能,一種是把原來的正類預測成正類(TP),另一種就是把原來的正類預測為負類(FN)。其實就是分母不同,一個分母是預測為正的樣本數,另一個是原來樣本中所有的正樣本數

F1-score:2/(1/P+1/R) 
ROC/AUC:TPR=TP/(TP+FN), FPR=FP/(FP+TN) 
Fβ=(1+β2)×P×Rβ2×P+RFβ=(1+β2)×P×Rβ2×P+R 其中β>1β>1查全率有更大影響,0<β<10<β<1查準率有更大影響。β=1β=1退化為F1 
2. ROC、AUC和PRC

 
ROC(receiver operating characteristic curve)是曲線。也就是下圖中的曲線。AUC也就是藍色線與FPR圍成的面積。一般來說,如果ROC是光滑的,那麼基本可以判斷沒有太大的overfitting(比如圖中0.2到0.4可能就有問題,但是樣本太少了),這個時候調模型可以只看AUC,面積越大一般認為模型越好。 
這裡寫圖片描述

PRC, precision recall curve。和ROC一樣,先看平滑不平滑(藍線明顯好些),在看誰上誰下(同一測試集上),一般來說,上面的比下面的好(綠線比紅線好)。F1當P和R接近就也越大,一般會畫連線(0,0)和(1,1)的線,線和PRC重合的地方的F1是這條線最大的F1(光滑的情況下),此時的F1對於PRC就好象AUC對於ROC一樣。一個數字比一條線更方便調模型。 
這裡寫圖片描述

有時候模型沒有單純的誰比誰好(比如圖二的藍線和青線),那麼選擇模型還是要結合具體的使用場景。

下面是兩個場景: 
1. 地震的預測 
對於地震的預測,我們希望的是RECALL非常高,也就是說每次地震我們都希望預測出來。這個時候我們可以犧牲PRECISION。情願發出1000次警報,把10次地震都預測正確了;也不要預測100次,對了8次漏了2次。 
2. 嫌疑人定罪 
基於不錯怪一個好人的原則,對於嫌疑人的定罪我們希望是非常準確的。及時有時候放過了一些罪犯(recall低),但也是值得的。

對於分類器來說,本質上是給一個概率,此時,我們再選擇一個CUTOFF點(閥值),高於這個點的判正,低於的判負。那麼這個點的選擇就需要結合你的具體場景去選擇。反過來,場景會決定訓練模型時的標準,比如第一個場景中,我們就只看RECALL=99.9999%(地震全中)時的PRECISION,其他指標就變得沒有了意義。

如果只能選一個指標的話,肯定是選PRC了。

3.註釋 
mark1:在一些應用中,對精準率(查準率)和召回率(查全率 )重視程度不同,如商品推薦系統中,為了儘可能少打擾使用者,更希望推薦的內容確實是使用者比較感興趣的,此時精準率(查準率)比較重要;在逃犯資訊檢索系統中,更希望儘量可能少漏掉逃犯,此時召回率(查全率 )比較重要; 
mark2:ROC比PRC效果好這個結論的切入點: 
對於同一份資料不同的模型來說,由於ROC同時考慮了兩個類別上的準確率,效果比PRC要好;PRC由於僅考慮正樣本,如果分佈失衡,容易造成某個模型的PRC很高,但其實是在樣本量大的那個類別“帶偏”了; 
mark3:PRC比ROC效果好這個結論的切入點: 
對於同一份資料同一個的模型來說(就只有一個模型,一個ROC,一個PRC),因為ROC對類分佈不敏感,就容易造成一個看似比較高的AUC對應的分類效果實際上並不好;而PRC就會波動非常大,以一個很“激烈”的方式表現出效果的不好。

某個模型AUC本身值的大小其實是不重要的,重要的是跟其他模型在同一份資料集上的AUC的大小關係,相對較大的那個更好。而PRC由於波動劇烈,即使不同模型在不同資料集上,也能看出一定的效果。(但其實對建立在不同資料上的不同模型,或者僅僅對某一個模型,僅靠PRC或者AUC來決定哪個好哪個差,這種方法本身就是不正確的。)