ROC曲線面積AUC詳解

一、roc曲線

1.roc曲線:接收者操作特徵(receiver operating characteristic), roc曲線上每個點反映着對同一信號刺激的感受性。

橫軸:負正類率(false postive rate FPR)特異度,劃分實例中所有負例佔所有負例的比例;(1-Specificity)

縱軸:真正類率(true postive rate TPR)靈敏度,Sensitivity(正類覆蓋率)

2. 針對一個二分類問題,將實例分成正類(postive)或者負類(negative)。但是實際中分類時,會出現四種情況。

(1)若一個實例是正類並且被預測爲正類,即爲真正類(True Postive TP)

(2)若一個實例是正類,但是被預測成爲負類,即爲假負類(False Negative FN)

(3)若一個實例是負類,但是被預測成爲正類,即爲假正類(False Postive FP)

(4)若一個實例是負類,但是被預測成爲負類,即爲真負類(True Negative TN)

      TP:正確的肯定數目

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

      FP:誤報,沒有的匹配不正確

      TN: 正確拒絕的非匹配數目

列聯表如下,1代表正類,0代表負類:

由上表可得出橫,縱軸的計算公式:

(1)真正類率(True Postive Rate)TPR: TP/(TP+FN),代表分類器預測的正類中實際正實例佔所有正實例的比例。Sensitivity

(2)負正類率(False Postive Rate)FPR: FP/(FP+TN),代表分類器預測的正類中實際負實例佔所有負實例的比例。1-Specificity

(3)真負類率(True Negative Rate)TNR: TN/(FP+TN),代表分類器預測的負類中實際負實例佔所有負實例的比例,TNR=1-FPR。Specificity

假設採用邏輯迴歸分類器,其給出針對每個實例爲正類的概率,那麼通過設定一個閾值如0.6,概率大於等於0.6的爲正類,小於0.6的爲負類。對應的就可以算出一組(FPR,TPR),在平面中得到對應座標點。隨着閾值的逐漸減小,越來越多的實例被劃分爲正類,但是這些正類中同樣也摻雜着真正的負實例,即TPR和FPR會同時增大。閾值最大時,對應座標點爲(0,0),閾值最小時,對應座標點(1,1)

如下面這幅圖,(a)圖中實線爲ROC曲線,線上每個點對應一個閾值。

 

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

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

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

二、 如何畫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判斷分類器(預測模型)優劣的標準:

  • AUC = 1,是完美分類器,採用這個預測模型時,存在至少一個閾值能得出完美預測。絕大多數預測的場合,不存在完美分類器。
  • 0.5 < AUC < 1,優於隨機猜測。這個分類器(模型)妥善設定閾值的話,能有預測價值。
  • AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。
  • AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測。

三、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取平均。然後再使用上述公式。 

舉例說明一下:

樣本:y=1,y = 1, y=1, y = -1, y = -1, y = -1

模型1的預測:0.8,0.7,0.3,0.5,0.6,0.9

模型2的預測:0.1, 0.8, 0.9, 0.5, 0.85, 0.2

模型1:正樣本score大於負樣的對包括(y1,y4)(y1,y5)(y2,y4)(y2,y5)。所以AUC值爲4/9

模型2:正樣本score大於負樣本的對包括(y2,y4)(y2,y6)(y3,y4)(y3,y5)(y3,y6)。所以AUC的值爲5/9

所以模型2要比模型1好

這種算法的複雜度爲O(n^2)其中n=(M+N)也就是樣本的數量

3. 方法3跟方法2是一樣的,只不過做了一些處理減小了複雜度,首先按照score進行排序,得分最大的爲n,第二大的爲n-1,依次類推,最小一個即爲1,那麼AUC的計算方法爲:AUC=((正樣本的排序之和)-m*(m+1)/2)/(M*N)。

看公式有點抽象,用上面的例子解釋一下

模型1:首先對預測的score進行排序,排序後的樣本爲:負(6),正(5),正(4),負(3),負(2),正(1)

AUC的值爲:((5+4+1)- 3 *(3+1)/2)/(3*3) = 4/9。可以看到跟方法二的計算結果一致,我們看一下這個計算公式,首先分子上後面的部分M*(M+1)/2。是不是很熟悉,小學就知道,上底加下底括號起來除以2,既是求梯形的面積公式,也是求連續值的公式,例如1+2+3+4。在這裏指的就是所有的正樣本的得分都小於所有的負樣本的得分的情況下,計算出來的值。前半部分指的是實際的情況下正樣本的排序。應該比較好理解了吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章