天天看點

查全率(Recall),查準率(Precision),靈敏性(Sensitivity),特異性(Specificity),F1,PR曲線,ROC,AUC的應用場景

之前介紹了這麼多分類模型的性能評價名額(《分類模型的性能評價名額(Classification Model Performance Evaluation Metric)》),那麼到底應該選擇哪些名額來評估自己的模型呢?答案是應根據應用場景進行選擇。

查全率(Recall):recall是相對真實的情況而言的:假設測試集裡面有100個正類,如果模型預測出其中40個是正類,那模型的recall就是40%。查全率也稱為召回率,等價于靈敏性(Sensitivity)和真正率(True Positive Rate,TPR)。

查全率(Recall),查準率(Precision),靈敏性(Sensitivity),特異性(Specificity),F1,PR曲線,ROC,AUC的應用場景

查全率的應用場景:需要盡可能地把所需的類别檢測出來,而不在乎結果是否準确。比如對于地震的預測,我們希望每次地震都能被預測出來,這個時候可以犧牲precision。假如一共發生了10次地震,我們情願發出1000次警報,這樣能把這10次地震都涵蓋進去(此時recall是100%,precision是1%),也不要發出100次警報,其中有8次地震給預測到了,但漏了2次(此時recall是80%,precision是8%)。

查準率(Precision):precision是相對模型的預測結果而言的:假設模型一共預測出了100個正類,其中80個是正确的,那麼precision就是80%。

查全率(Recall),查準率(Precision),靈敏性(Sensitivity),特異性(Specificity),F1,PR曲線,ROC,AUC的應用場景

查準率的應用場景:需要盡可能地把所需的類别檢測準确,而不在乎這些類别是否都被檢測出來。比如對于罪犯的預測,我們希望預測結果是非常準确的,即使有時候放過了一些真正的罪犯,也不能錯怪一個好人。

總結一下查全率和查準率的差別:

1. recall和precision是互相沖突的。如果想要更高的recall,那麼就要讓模型的預測能覆寫到更多的樣本,但是這樣模型就更有可能犯錯,也就是說precision會比較低。如果模型很保守,隻能檢測出它很确定的樣本,那麼其precision會很高,但是recall會相對低。

2. recall(TPR)的分母是樣本中正類的個數,是以樣本一旦确定,其分母即為定值,也就是說recall的變化随分子增加而單調遞增;precision的分母是樣本中預測為正類的個數,其會随着分類門檻值的變化而變化,是以Precision的變化受TP和FP的綜合影響,不單調,變化情況不可預測。

F1:F1 score是對查準率和查全率取平均,但是這裡不是取算數平均,而是取調和平均。為什麼?因為調和平均值更接近較小值,這樣查準率或查全率中哪個值較小,調和平均值就更接近這個值,這樣的測量名額更嚴格。

查全率(Recall),查準率(Precision),靈敏性(Sensitivity),特異性(Specificity),F1,PR曲線,ROC,AUC的應用場景
查全率(Recall),查準率(Precision),靈敏性(Sensitivity),特異性(Specificity),F1,PR曲線,ROC,AUC的應用場景

 或  

F1的應用場景:在precision和recall兩者要求同樣高的情況下,可以用F1來衡量。

查全率和查準率是最常用的兩個分類名額,除此之外人們還會用到以下一些名額:

(注:查全率在醫學上經常被稱為真陽性率(True Positive Rate,TPR),也就是正确檢測出疾病的比例。)

假陽性率(False Positive Rate,FPR):在所有實際為負類的樣本中,預測錯誤的比例,在醫學上又稱誤診率(沒有病的人被檢測出有病),等于 1 - 特異性(Specificity)。

FPR= FP / (FP + TN) 

假陰性率(False Negative Rate,FNR):在所有實際為正類的樣本中,預測錯誤的比例,在醫學上又稱漏診率(有病的人沒有被檢測出來),等于 1 - 靈敏性(Sensitivity)。

FNR = FN /(TP + FN)

與recall和precision互相沖突不同,TPR和FPR呈正相關關系,也就是說TPR增大,FPR也會變大。我們希望TPR能夠越大越好(為1),FPR越小越好(為0),但這通常是不可能發生的。

在現實中,人們往往對查全率和查準率都有要求,但是會根據應用場景偏向某一邊。比如做疾病檢測,我們希望盡可能地把疾病檢測出來,但同時也不想檢測結果的準确率太低,因為這樣會造成恐慌和不必要的醫療支出(偏向recall)。又比如對于垃圾郵件檢測(Spam Detection),我們希望檢測出的垃圾郵件肯定是垃圾郵件,而不希望把正常郵件郵件歸為垃圾郵件,因為這樣有可能會給客戶造成很大的損失,但是相對地,如果我們經常把垃圾郵件歸為正常郵件,雖然不會造成很大損失,但是會影響使用者體驗(偏向precision)。再比如如果是做搜尋,搜出來的網頁都和關鍵詞相關才是好的搜尋引擎,在這種情況下,我們希望precision高一些(偏向precision)。這時就要用到PR曲線。

PR曲線:x軸為查全率,y軸為查準率。

PR曲線的應用場景:需要根據需求找到對應的precision和recall值。如果偏向precison,那就是在保證recall的情況下提升precision;如果偏向recall,那就是在保證precision的情況下提升recall。比如對于欺詐檢測(Fraud Detection),如果要求預測出的潛在欺詐人群盡可能準确,那麼就要提高precision;而如果要盡可能多地預測出潛在的欺詐人群,那麼就是要提高recall。一般來說,提高二分類模型的分類門檻值就能提高precision,降低分類門檻值就能提高 recall,這時便可觀察PR 曲線,根據自己的需要,找到最優的分類門檻值(threshold)。

ROC曲線和AUC:ROC曲線的x軸為FPR,y軸為TPR。AUC值是一個機率值,反映的是分類器對樣本的排序能力,即從所有正例中随機選取一個樣本A,再從所有負例中随機選取一個樣本B,分類器将A判為正例的機率比将B判為正例的機率大的可能性。AUC越大,說明排序能力越好,即分類器将越多的正例排在負例之前。

查全率(Recall),查準率(Precision),靈敏性(Sensitivity),特異性(Specificity),F1,PR曲線,ROC,AUC的應用場景

對于一個給定的資料集,ROC空間和PR空間存在一一對應的關系,因為二者的混淆矩陣完全一緻的。我們可以将ROC曲線轉化為PR曲線,反之亦然。那麼既然已經有這麼多評價名額了,為什麼還要使用ROC曲線和AUC呢?這是因為ROC曲線有一個很好的特性:當測試集中正負樣本的比例發生變化的時候,ROC曲線能夠保持不變。這樣,當測試資料中正負樣本的分布随時間而變化時,我們就可以通過ROC曲線來比較模型的性能。

ROC曲線和AUC的應用場景:在二分類模型中正例和負例同等重要的時候(需要比較模型的整體性能),或者當測試資料中正負樣本的分布随時間而變化時,适合用ROC曲線評價。

一般來說,模型的ROC-AUC值越大,模型的分類效果越好。不過如果兩個模型AUC值差不多,并不代表這兩個模型的效果相同。下面兩幅圖中兩條ROC曲線相交于一點,AUC值幾乎一樣:當需要高Sensitivity時,模型A(細線)比B好;當需要高Speciticity時,模型B(粗線)比A好。

總結一下PR曲線和ROC曲線&AUC的差別:

1. 在正負樣本差距不大的情況下,ROC曲線和PR曲線的趨勢是差不多的,但是當正負樣本相差懸殊的時候(通常負樣本比正樣本多很多),兩者就截然不同了,在ROC曲線上的效果依然看似很好,但是在PR曲線上就效果一般了。這就說明對于類别不平衡問題,ROC曲線的表現會比較穩定(不會受不均衡資料的影響),但如果我們希望看出模型在正類上的表現效果,還是用PR曲線更好,因為此時ROC曲線通常會給出一個過于樂觀的效果估計。

2. ROC曲線由于兼顧正例與負例,适用于評估分類器的整體性能(通常是計算AUC,表示模型的排序性能);PR曲線則完全聚焦于正例,是以如果我們主要關心的是正例,那麼用PR曲線比較好。

3. ROC曲線不會随着類别分布的改變而改變。然而,這一特性在一定程度上也是其缺點。是以需要根據不用的場景進行選擇:比如對于欺詐檢測,每個月正例和負例的比例可能都不相同,這時候如果隻想看一下分類器的整體性能是否穩定,則用ROC曲線比較合适,因為類别分布的改變可能使得PR曲線發生變化,這種時候難以進行模型性能的比較;反之,如果想測試不同的類别分布對分類器性能的影響,則用PR曲線比較合适。

總的來說,我們應該根據具體的應用場景,在相應的曲線上找到最優的點,得到相對應的precision,recall,f1 score等名額,然後去調整模型的分類門檻值,進而得到一個符合具體應用的模型。

附:

如何畫PR曲線?

根據每個測試樣本屬于正樣本的機率值從大到小排序,依次将這些機率值作為分類門檻值,當測試樣本屬于正樣本的機率大于或等于這個threshold時,我們認為它為正樣本,否則為負樣本。每次選取一個不同的threshold,我們就可以得到一組recall和precision,即PR曲線上的一點。取n組不同的分類門檻值,就可以得到n個點,連接配接起來就成為一條曲線。threshold取值越多,PR曲線越平滑。

如何畫ROC曲線?

根據每個測試樣本屬于正樣本的機率值從大到小排序,依次将這些機率值作為分類門檻值,當測試樣本屬于正樣本的機率大于或等于這個threshold時,我們認為它為正樣本,否則為負樣本。每次選取一個不同的threshold,我們就可以得到一組FPR和TPR,即ROC曲線上的一點。取n組不同的分類門檻值,就可以得到n個點,連接配接起來就成為一條曲線。threshold取值越多,ROC曲線越平滑。

如何計算AUC值?

假定ROC曲線是由坐标為 

查全率(Recall),查準率(Precision),靈敏性(Sensitivity),特異性(Specificity),F1,PR曲線,ROC,AUC的應用場景

 的點按序連接配接而形成,則AUC可估算為:

查全率(Recall),查準率(Precision),靈敏性(Sensitivity),特異性(Specificity),F1,PR曲線,ROC,AUC的應用場景

繼續閱讀