AUC計算方法總結

2021-08-31 06:55:01 字數 4205 閱讀 4906

一、roc曲線

1、roc曲線:接收者操作特徵(receiveroperating 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計算

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計算方法總結

auc area under the curve 是一種用來度量分類模型好壞的乙個標準,這裡不詳細敘述auc的定義及意義,詳見wiki。演算法1 如下圖是乙個分類器的結果,計算點形成的折線的面積就是auc的值 如下 public double aucalg1 if scores 1 contains...

AUC計算方法總結

一 roc曲線 1 roc曲線 接收者操作特徵 receiveroperating characteristic roc曲線上每個點反映著對同一訊號刺激的感受性。橫軸 負正類率 false postive rate fpr 特異度,劃分例項中所有負例佔所有負例的比例 1 specificity 縱軸...

AUC計算方法總結

一 roc曲線 1 roc曲線 接收者操作特徵 receiveroperating characteristic roc曲線上每個點反映著對同一訊號刺激的感受性。橫軸 負正類率 false postive rate fpr 特異度,劃分例項中所有負例佔所有負例的比例 1 specificity 縱軸...