ROC曲線-閾值評價標准


 ROC曲線指受試者工作特征曲線 / 接收器操作特性曲線(receiver operating characteristic curve), 是反映敏感性和特異性連續變量的綜合指標,是用構圖法揭示敏感性和特異性的相互關系它通過將連續變量設定出多個不同的臨界值,從而計算出一系列敏感性和特異性,再以敏感性為縱坐標(1-特異性)為橫坐標繪制成曲線,曲線下面積越大,診斷准確性越高。在ROC曲線上,最靠近坐標圖左上方的點為敏感性和特異性均較高的臨界值。

ROC曲線的例子

  考慮一個二分問題,即將實例分成正類(positive)或負類(negative)。對一個二分問題來說,會出現四種情況。如果一個實例是正類並且也被 預測成正類,即為真正類(True positive),如果實例是負類被預測成正類,稱之為假正類(False positive)。相應地,如果實例是負類被預測成負類,稱之為真負類(True negative),正類被預測成負類則為假負類(false negative)。

TP:正確肯定的數目;

FN:漏報,沒有正確找到的匹配的數目;

FP:誤報,給出的匹配是不正確的;

TN:正確拒絕的非匹配對數;

列聯表如下表所示,1代表正類,0代表負類。

  

    預測  
    1 0 合計
實際 1 True Positive(TP) False Negative(FN) Actual Positive(TP+FN)
  0 False Positive(FP) True Negative(TN) Actual Negative(FP+TN)
合計   Predicted Positive(TP+FP) Predicted Negative(FN+TN) TP+FP+FN+TN

從列聯表引入兩個新名詞。其一是真正類率(true positive rate ,TPR), 計算公式為TPR=TP/ (TP+ FN),刻畫的是分類器所識別出的 正實例占所有正實例的比例。另外一個是負正類率(false positive rate, FPR),計算公式為FPR= FP / (FP + TN),計算的是分類器錯認為正類的負實例占所有負實例的比例。還有一個真負類率(True Negative Rate,TNR),也稱為specificity,計算公式為TNR=TN/ (FP+ TN) = 1-FPR。

其中,兩列True matches和True non-match分別代表應該匹配上和不應該匹配上的

兩行Pred matches和Pred non-match分別代表預測匹配上和預測不匹配上的

  在一個二分類模型中,對於所得到的連續結果,假設已確定一個閥值,比如說 0.6,大於這個值的實例划歸為正類,小於這個值則划到負類中。如果減小閥值,減到0.5,固然能識別出更多的正類,也就是提高了識別出的正例占所有正例 的比類,即TPR,但同時也將更多的負實例當作了正實例,即提高了FPR。為了形象化這一變化,在此引入ROC,ROC曲線可以用於評價一個分類器。

橫軸FPR:  1-TNR,1-Specificity,  FPR越大,預測正類中實際負類越多。

縱軸TPR:Sensitivity(正類覆蓋率),TPR越大,預測正類中實際正類越多。

理想目標:TPR=1,FPR=0,即圖中(0,1)點,故ROC曲線越靠攏(0,1)點,越偏離45度對角線越好,Sensitivity、Specificity越大效果越好。

ROC曲線和它相關的比率

(a)理想情況下,TPR應該接近1,FPR應該接近0。

ROC曲線上的每一個點對應於一個threshold,對於一個分類器,每個threshold下會有一個TPR和FPR。

比如Threshold最大時,TP=FP=0,對應於原點;Threshold最小時,TN=FN=0,對應於右上角的點(1,1)

(b)P和N得分不作為特征間距離d的一個函數,隨着閾值theta增加,TP和FP都增加

  Receiver Operating Characteristic,翻譯為"接受者操作特性曲線",夠拗口的。曲線由兩個變量1-specificity 和 Sensitivity繪制. 1-specificity=FPR,即負正類率。Sensitivity即是真正類率,TPR(True positive rate),反映了正類覆蓋程度。這個組合以1-specificity對sensitivity,即是以代價(costs)對收益(benefits)。

       此外,ROC曲線還可以用來計算“均值平均精度”(mean average precision),這是當你通過改變閾值來選擇最好的結果時所得到的平均精度(PPV).

  下表是一個邏輯回歸得到的結果。將得到的實數值按大到小划分成10個個數 相同的部分。  

Percentile 實例數 正例數 1-特異度(%) 敏感度(%)
10 6180 4879 2.73 34.64
20 6180 2804 9.80 54.55
30 6180 2165 18.22 69.92
40 6180 1506 28.01 80.62
50 6180 987 38.90 87.62
60 6180 529 50.74 91.38
70 6180 365 62.93 93.97
80 6180 294 75.26 96.06
90 6180 297 87.59 98.17
100 6177 258 100.00 100.00

其正例數為此部分里實際的正類數。也就是說,將邏輯回歸得到的結 果按從大到小排列,倘若以前10%的數值作為閥值,即將前10%的實例都划歸為正類,6180個。其中,正確的個數為4879個,占所有正類的 4879/14084*100%=34.64%,即敏感度;另外,有6180-4879=1301個負實例被錯划為正類,占所有負類的1301 /47713*100%=2.73%,即1-特異度。以這兩組值分別作為x值和y值,在excel中作散點圖。

二 如何畫roc曲線

假設已經得出一系列樣本被划分為正類的概率,然后按照大小排序,下圖是一個示例,圖中共有20個測試樣本,“Class”一欄表示每個測試樣本真正的標簽(p表示正樣本,n表示負樣本),“Score”表示每個測試樣本屬於正樣本的概率。

 

接下來,我們從高到低,依次將“Score”值作為閾值threshold,當測試樣本屬於正樣本的概率大於或等於這個threshold時,我們認為它為正樣本,否則為負樣本。舉例來說,對於圖中的第4個樣本,其“Score”值為0.6,那么樣本1,2,3,4都被認為是正樣本,因為它們的“Score”值都大於等於0.6,而其他樣本則都認為是負樣本。每次選取一個不同的threshold,我們就可以得到一組FPR和TPR,即ROC曲線上的一點。這樣一來,我們一共得到了20組FPR和TPR的值,將它們畫在ROC曲線的結果如下圖:

 

  

 

AUC(Area under Curve):Roc曲線下的面積,介於0.1和1之間。Auc作為數值可以直觀的評價分類器的好壞,值越大越好。

首先AUC值是一個概率值,當你隨機挑選一個正樣本以及負樣本,當前的分類算法根據計算得到的Score值將這個正樣本排在負樣本前面的概率就是AUC值,AUC值越大,當前分類算法越有可能將正樣本排在負樣本前面,從而能夠更好地分類。

二、AUC計算  

 1.  最直觀的,根據AUC這個名稱,我們知道,計算出ROC曲線下面的面積,就是AUC的值。事實上,這也是在早期 Machine Learning文獻中常見的AUC計算方法。由於我們的測試樣本是有限的。我們得到的AUC曲線必然是一個階梯狀的。因此,計算的AUC也就是這些階梯 下面的面積之和。這樣,我們先把score排序(假設score越大,此樣本屬於正類的概率越大),然后一邊掃描就可以得到我們想要的AUC。但是,這么 做有個缺點,就是當多個測試樣本的score相等的時候,我們調整一下閾值,得到的不是曲線一個階梯往上或者往右的延展,而是斜着向上形成一個梯形。此 時,我們就需要計算這個梯形的面積。由此,我們可以看到,用這種方法計算AUC實際上是比較麻煩的。 

   2. 一個關於AUC的很有趣的性質是,它和Wilcoxon-Mann-Witney Test是等價的。這個等價關系的證明留在下篇帖子中給出。而Wilcoxon-Mann-Witney Test就是測試任意給一個正類樣本和一個負類樣本,正類樣本的score有多大的概率大於負類樣本的score。有了這個定義,我們就得到了另外一中計 算AUC的辦法:得到這個概率。我們知道,在有限樣本中我們常用的得到概率的辦法就是通過頻率來估計之。這種估計隨着樣本規模的擴大而逐漸逼近真實值。這 和上面的方法中,樣本數越多,計算的AUC越准確類似,也和計算積分的時候,小區間划分的越細,計算的越准確是同樣的道理。具體來說就是統計一下所有的 M×N(M為正類樣本的數目,N為負類樣本的數目)個正負樣本對中,有多少個組中的正樣本的score大於負樣本的score。當二元組中正負樣本的 score相等的時候,按照0.5計算。然后除以MN。實現這個方法的復雜度為O(n^2)。n為樣本數(即n=M+N) 
   3.  第三種方法實際上和上述第二種方法是一樣的,但是復雜度減小了。它也是首先對score從大到小排序,然后令最大score對應的sample 的rank為n,第二大score對應sample的rank為n-1,以此類推。然后把所有的正類樣本的rank相加,再減去M-1種兩個正樣本組合的情況。得到的就是所有的樣本中有多少對正類樣本的score大於負類樣本的score。然后再除以M×N。即 

 

      公式解釋:

        1、為了求的組合中正樣本的score值大於負樣本,如果所有的正樣本score值都是大於負樣本的,那么第一位與任意的進行組合score值都要大,我們取它的rank值為n,但是n-1中有M-1是正樣例和正樣例的組合這種是不在統計范圍內的(為計算方便我們取n組,相應的不符合的有M個),所以要減掉,那么同理排在第二位的n-1,會有M-1個是不滿足的,依次類推,故得到后面的公式M*(M+1)/2,我們可以驗證在正樣本score都大於負樣本的假設下,AUC的值為1

      2、根據上面的解釋,不難得出,rank的值代表的是能夠產生score前大后小的這樣的組合數,但是這里包含了(正,正)的情況,所以要減去這樣的組(即排在它后面正例的個數),即可得到上面的公式

      另外,特別需要注意的是,再存在score相等的情況時,對相等score的樣本,需要 賦予相同的rank(無論這個相等的score是出現在同類樣本還是不同類的樣本之間,都需要這樣處理)。具體操作就是再把所有這些score相等的樣本 的rank取平均。然后再使用上述公式。 

AUC(Area Under Curve)被定義為ROC曲線下的面積,顯然這個面積的數值不會大於1。又由於ROC曲線一般都處於y=x這條直線的上方,所以AUC的取值范圍在0.5和1之間。使用AUC值作為評價標准是因為很多時候ROC曲線並不能清晰的說明哪個分類器的效果更好,而作為一個數值,對應AUC更大的分類器效果更好。

機器學習實踐中 分類器常用的評價指標就是auc,不想搞懂,簡單用的話,記住一句話就行
auc取值范圍[0.5,1],越大表示越好,小於0.5的把結果取反就行。

參考: http://blog.csdn.net/abcjennifer/article/details/7359370

      https://www.zybuluo.com/frank-shaw/note/152851


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM