1. 引言
ROC(Receiver Operating Characteristic)曲線和AUC(Area Under Curve)常被用來評價一個二值分類器(binary classifier)的優劣。相比準確率、召回率、F-score這樣的評價指標,ROC曲線有這樣一個很好的特性:當測試集中正負樣本的分佈變化的時候,ROC曲線可以保持不變。在實際的數據集中常常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多不少(或者相反),並且測試數據中的正負樣本的分佈也可能隨着時間變化。算法
論文[3]是篇很不錯的文章,介紹了ROC和AUC的特色,如何做出ROC曲線圖和計算AUC,AUC的含義,以及對多類別分類問題如何計算AUC。後來有篇博文[4]翻譯了這篇文章的核心部分,淺顯易懂,適合不喜歡讀英文的讀者。dom

圖1摘自論文[3]。ROC曲線,是以一系列的(fp rate, tp rate)或者寫成(FPR, TPR),爲二維笛卡爾座標系中的座標點。應用到實際問題中,對一份訓練集如何算出一系列的FPR和TPR,能夠參考[3]或[4]。機器學習
AUC(確切的說,應該是AUROC)被定義爲ROC曲線下的面積,顯然這個面積的數值不會大於1。ROC曲線上的任意相鄰兩點與橫軸都能造成梯形,把全部這樣的梯形面積作加和便可獲得AUC。通常而言,訓練樣本越多,在獲得樣本判別爲正例的分數取值後不一樣分數也相對會越多,這樣ROC曲線上的點也就越多,估算的AUC會更準些。這種思路很像微積分裏經常使用的微分法。該方法正是在論文[3]中描述的方法,筆者在實際業務中實現了它,它並不難實現。post
2. AUC的物理含義
那麼AUC值的含義是什麼呢?在論文[3],有這樣一段話:」The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example. This is equivalent to the Wilcoxon test of ranks (Hanley and McNeil, 1982). The AUC is also closely related to the Gini coefficient (Breiman et al., 1984), which is twice the area between the diagonal and the ROC curve. Hand and Till (2001) point out that Gini + 1 = 2 * AUC.」學習
簡單翻譯下:首先AUC值是一個機率值,當你隨機挑選一個正樣本以及一個負樣本,當前的分類算法根據計算獲得的Score值將這個正樣本排在負樣本前面的機率就是AUC值。AUC值越大,當前的分類算法越有可能將正樣本排在負樣本前面,即可以更好的分類。另外,AUC與Gini分數有聯繫,Gini + 1 = 2*AUC。測試
關於AUC表示的機率含義在ROC的維基百科詞條[5]中也有說明。不過維基百科中還提到這樣一個觀點,機器學習領域中常常用ROC和AUC去作模型對比,最近學術界認爲這種作法會引入一些錯判,有些文章對此進行了討論。筆者認爲學術界值得認真討論此問題,但在工業界,AUC指標通常與業務評價指標(好比點擊率等)自己就不是一致的,因此在實際業務中,會綜合考慮AUC指標以及其餘指標來選擇最終模型,這樣作能下降選到不良模型的可能性。ui
既然瞭解了AUC表示的機率含義,那麼就能夠經過幾率統計的方法來算AUC。作N次隨機試驗,每次實驗中隨機採樣一個正樣本和一個負樣本,當模型預測正樣本的分數大於模型預測負樣本的分數,計數則加1。記計數最終爲n(n確定小於等於N),那麼用n/N即獲得AUC。Stackexchange中的一篇帖子[6]在」A concordance measure」一節中也提到了這種算AUC的方法,並經過實驗說明此方法計算出的AUC與畫出ROC曲線而後算AUC面積是一致的。不過應用這個物理含義來算AUC,除了走先隨機採樣後計數以獲得機率的方案外,還能夠用公式1來計算:atom
說明: P表示正樣本集合,N表示負樣本集合,|S|表示集合S的元素個數。ri表示元素i在全集(P+N)中按預測score從小到大排的rank位置(rank位置從1開始,好比:假設|P+N|=10,那麼最高分的rank值爲10,最低分的rank值爲1)。舉例子說明上式的計算過程:
假設|P+N|有5個元素,按系統預測score從小到大排以下:
樣本狀況 | 樣本1 | 樣本2 | 樣本3 | 樣本4 | 樣本5 |
---|---|---|---|---|---|
正例 or 負例 | N | P | N | P | P |
系統預測score | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 |
rank值ri | 1 | 2 | 3 | 4 | 5 |
對該例,|P|=3,|N|=2,分母爲6,分子爲(2+4+5)–(0.5×3×4)=5。那麼AUC爲5÷6=0.8333。
下面用兩節分別證實這個式子與AUC的物理含義是一致,以及該式與第一種方法(基於ROC曲線計算AUROC的方法)是一致的。以此獲得三種方法的相互一致。(爲了描述直觀,先忽略因系統預測score相同致使rank值相同,後面再對此作說明)
3. 與AUC的物理含義一致的證實
全集(P+N)中一個正樣本與一個負樣本組成pair的總數爲 |P|×|N| ,也就是式子中的分母。那麼接下來只須要證實對於{ri}序列來講,知足正樣本的rank值大於負樣本rank值的pair總數是分子表達的那個數。這個能夠基於加法原理來計算,對每一個正樣本,統計出它的rank值能大於的負樣本個數,作個累加求和便可。對某個i∈P,它的rank值能大於的負樣本個數表示爲(公式2和公式3是等價的,不過式子3便於作後面的累加求和):
4. 與基於ROC曲線計算AUROC的方法一致的證實
畫出ROC曲線(橫軸爲FPR=FP|N|,縱軸爲TPR=TP|P|),算出每一個小梯形的面積而後累加求和。對{ri}序列,該方法能夠用公式形式化表示以下:

結合公式5的說明,即證實了公式1與 基於ROC曲線計算AUROC的方法 是一致的。
說明:當存在預測score相等的狀況時,對相等score的樣本,須要 賦予相同的rank(不管這個相等的score是出如今同類樣本仍是不一樣類的樣本之間,都須要這樣處理)。對這個rank是這樣計算的:把全部這些預測score相等的樣本的rank取平均,而後再使用上述公式。
雖然三種方法是等價的,但在計算量上去掉排序的因素(排序的計算複雜度爲O(NlogN)),公式1的計算效率要高。
參考文獻
[1] Hanley, J.A., McNeil, B.J., The meaning and use of the area under a receiver operating characteristic (ROC) curve. Radiology 143, 29–36. 1982.
[2] Breiman, L., Friedman, J., Olshen, R., Stone, C., Classification and Regression Trees. Wadsworth International Group. 1984.
[3] Tom Fawcett, An introduction to ROC analysis. Pattern Recognition Letters. 2006.
[4] Introduction to auc and roc
[5] ROC(Receiver operating characteristic) (From Wikipedia)
[6] How to calculate area under the curve auc or the c-statistic by hand