本文主要討論了auc的實際意義,並給出了auc的常規計算方法及其證明
轉載請注明出處:http://www.cnblogs.com/van19/p/5494908.html
1 ROC曲線和auc
從二分類說起,假設我們的樣本全集里,所有樣本的真實標簽(label)為0或1,其中1表示正樣本,0表示負樣本,如果我們有一個分類模型,利用它對樣本進行了標注,那邊我們可以得到下面的划分
|
|
truth |
|
|
|
1 |
0 |
predictor |
1 |
TP |
FP |
0 |
FN |
TN |
TP(true positive):表示正確的肯定
TN( true negative):表示正確的否定
FP(false positive):表示錯誤的肯定
FN (false negative):表示錯誤的否定
簡記:第一個字母表示最終結果true or false(正確或錯誤),第二個字母表示預測標簽positive or negative(肯定或否定),從左往右讀。例如FP,表示錯誤地肯定,即預測是1,而真實是0個樣本個數。
由此,我們能得到TPR和FPR的定義
TPR(true positive rate):TPR = TP / T = TP / (TP + FN),表示預測為正的正確結果TP在所有正樣本T中的占比,顯然TPR越大,模型的預估能力更好。
FPR(false positive rate):FPR = FP / F = FP / (FP + TN) ,表示預測為正的錯誤結果FP在所有負樣本F中的占比,顯然FPR越大,模型的預估能力越差。
ROC曲線(receiver operating characteristic curve),由FPR為X軸坐標,TPR為Y軸坐標的曲線。下面介紹如何繪制ROC曲線
假設模型M對樣本進行標注,當預測值大於某個閾值r時,我們用下面的函數來預測最后結果
$f(x)=\left\{\begin{matrix}1\ \ x\geqslant r\\0\ \ x<r\end{matrix}\right.$
然后,對於每一個r,模型對所有樣本標注一遍,統計得到所有的TP和FP,就可以計算(fpr,tpr),對所有的點在ROC圖上進行標注就可以得到ROC曲線,而本文的主題AUC就是指
ROC曲線下方的面積(Area under the Curve of ROC)。
下面我們來看一個實際的例子
下面表中有10個樣本,其中5個正樣本,5個負樣本,即T=5,F=5。
score |
label |
0.15 |
1 |
0.12 |
1 |
0.11 |
0 |
0.1 |
0 |
0.04 |
0 |
0.04 |
1 |
0.03 |
1 |
0.02 |
0 |
0.012 |
1 |
0.01 |
0 |
我們讓r從+∞逐漸較小至-∞,對每一個區間的r計算點(fpr,tpr),如下圖
r |
fp |
tp |
fpr |
tpr |
(0.15,+∞) |
0 |
0 |
0 |
0 |
(0.12,0.15] |
0 |
1 |
0 |
0.2 |
(0.11,0.12] |
0 |
2 |
0 |
0.4 |
(0.1,0.11] |
1 |
2 |
0.2 |
0.4 |
(0.04,0.1] |
2 |
2 |
0.4 |
0.4 |
(0.03,0.04] |
3 |
3 |
0.6 |
0.6 |
(0.02,0.03] |
3 |
4 |
0.6 |
0.8 |
(0.012,0.02] |
4 |
4 |
0.8 |
0.8 |
(0.01,0.012] |
4 |
5 |
0.8 |
1 |
(-∞,0.01) |
5 |
5 |
1 |
1 |
由此描繪ROC曲線
計算auc
auc即為ROC曲線下方的面積,按梯形法(連續兩點構成的梯形)計算面積得到上面例子的auc為0.62。
2 AUC的實際意義
AUC表示,隨機抽取一個正樣本和一個負樣本,分類器正確給出正樣本的score高於負樣本的概率。在所有標注樣本中,正樣本共T個,負樣本共F個,如果隨機抽一個正樣本和負樣本,共有T*F個pair,其中如果有s個pair的正負樣本pair滿足於正樣本的score高於負樣本(權重為1),v個pair正負樣本score相同(權重為0.5),則auc就等於(s+0.5v)/(T*F)。本文的例子中,s=15,v=1,則auc=(15+1*0.5)/(5*5)=0.62,和梯形法計算面積的結果是一致。整體上對於某一個正負樣本pair:<i,j>的權重Wij計算如下
$ W(i,j)=\left\{\begin{matrix}1\ \ s_i>s_j\\0.5\ s_i=s_j\\0\ \ s_i<s_j\end{matrix}\right.$
si和sj分別表示正樣本i和負樣本j的score。
下面我們對這個進行證明
我們用梯形法,求摸一個梯形的面積時,如上圖
圖中黃色填充區域的面積是
$ S=(x_2-x_1)*(y_2+y_1)/2=(x_2-x_1)*y_1+0.5*(x_2-x_1)*(y_2-y_1) $
對S的分子分母同時乘以T*F,由於x*F=FP,y*T=TP,所以有
$ S=\frac{(FP_2-FP_1)*TP_1+0.5*(FP_2-FP_1)*(TP_2-TP_1)}{T*F}=\frac{\Delta FP*TP_1+0.5*\Delta FP*\Delta TP}{T*F} $
其中ΔFP=FP2-FP1>=0,表示隨着r降低,本次計算roc點時新增的負樣本數目;ΔTP=TP2-TP1>=0,表示隨着r的降低,本次計算roc點時新增的正樣本數目。
由上式可以看出,分母T*F表示所有正負樣本的pair總數。
分子第一部分ΔFP*TP1表示新增正負樣本pair數目,因為前一個的正樣本數TP1和本次新增的負樣本數ΔFP組成的pair都滿足正樣本的score高於負樣本,這部分pair權重為1
分子第二部分ΔFP*ΔTP表示此次新增的同score的正負樣本pair數目,這部分權重為0.5。
由此可知每一個梯形面積都表示此時正負樣本pair滿足正樣本score大於等於負樣本的加權計數值占全體正負樣本pair的占比。從S0累計到最后一個Sn整體表示樣本整體滿足條件的正負樣本的占比,此時等於AUC的面積計算值。
3 AUC的計算方法
到此為止,我們給出了計算auc的兩種方法
1根據定義,由梯形法計算ROC曲線下的面積,求auc
2遍歷全部樣本,對正負pair的數目計數,求auc
在單機上,這兩種算法的復雜度比較高,我們對方法2稍作改進,得到方法3
3我們可以將所有樣本按升序排好后,通過樣本的序號(或者說排序位置,從1開始)rank來計算,我們先給出公式
AUC=((所有的正樣本rank相加)-T*(T+1)/2)/(T*F)
對相等score的樣本,需要賦予相同的rank,即把所有這些score相等的樣本的rank和取平均。
本文的例子(表1),按升序排好后如下表
rank |
score |
label |
1 |
0.01 |
0 |
2 |
0.012 |
1 |
3 |
0.02 |
0 |
4 |
0.03 |
1 |
5 |
0.04 |
0 |
6 |
0.04 |
1 |
7 |
0.1 |
0 |
8 |
0.11 |
0 |
9 |
0.12 |
1 |
10 |
0.15 |
1 |
所有的正樣本rank相加=10+9+(5+6)/2+4+2=30.5,注意5和6由於score相同,需要均分rank和。
auc=(30.5-5*6/2)/(5*5)=0.62
下面我們證明一下這個計算公式和方法2計算是一致的
首先是分母部分,T*F表示所有正負樣本pair數,對於分子部分
設每個正樣本i的rank值為Ri,其score為si,
-
若Ri的score唯一,表示si大於Ri-1個樣本,樣本i和這Ri-1個樣本組成的pair權值為1,所有此類正樣本的rank之和表示和之前的所有Ri個樣本組成的pair數(包括和自己的pair以及之前的正樣本pair也算在內)
-
如Ri的score不唯一,不妨設此時有p個正樣本和q個負樣本score和i相同,那么此時有p*q個pair權值為0.5。
假設這連續p+q個樣本中的第一個rank為t,則第p+q個樣本的rank為t+p+q-1,根據方法3所述,這p+q個樣本的rank值用平均rank來代替,為(t+t+p+q-1)/2,則p個正樣本的ranker和為(t+t+p+q-1)*p*0.5=p*(t+t+p-1)/2+0.5*p*q。
我們看到第二項就是p*q個正負樣本pair的加權和,而第一項是rank從r,r+1,…,r+p-1這p個正樣本的rank和,它表示這p個正樣本和r前面的樣本組成的pair數(這p個樣本和自己的pair和之前的正樣本pair也算在內)。
從1和2分析看,所有正樣本rank和會把正樣本自己(共T個pair)和自己之前的所有正樣本組成的pair(共T*(T-1)/2個pair)都計算一遍,並且權重為1,因此最后要去掉這個計數,這個計數就是T*(T+1)/2個pair,因此方法3的公式的分子算出來是正確正負樣本pair的加權和。
4 總結
auc的意義
1 auc只反應模型對正負樣本排序能力強弱,對score的大小和精度沒有要求
2 auc越高模型的排序能力越強,理論上,當模型把所有正樣本排在負樣本之前時,auc為1.0,是理論最大值。