文章目錄
1.背景
很多學習器是為測試樣本產生一個實值或概率預測(比如比較簡單的邏輯回歸分類器),然后將這個預測值與一個分類閾值(threshold)進行比較,若大於閾值則分為正類,否則為反類。這個實值或概率預測結果的好壞,直接決定了學習器的泛化能力。我們可以根據這個實值或概率預測結果,將測試樣本進行排序,“最可能”是正例的排在最前面,“最不可能”是正例的排在最后面。這樣,分類過程就相當於在這個排序中以某個 “截斷點”(cut point)將樣本分類兩部分,前一部分判作正例,后一部分則判作反例。
在不同的應用任務中,我們可以根據任務需求來采用不同的截斷點,例如:
- 更重視“查准率”,則可選擇排序中靠前的位置進行截斷
- 更重視“查全率”,則可選擇排序中靠后的位置進行截斷
因此,排序本身的質量好壞,體現了綜合考慮學習器在不同任務下的“期望泛化性能”的好壞,或者說,“一般情況下”泛化性能的好壞。ROC曲線就是從這個角度出發來研究學習器泛化性能的有力工具。
注:混淆矩陣、查准率、查全率等概念參見上一篇文章:分類問題中模型的性能度量(一)
2.ROC曲線
2.1 ROC名稱溯源(選看)
ROC全稱是“受試者工作特征”(Receiver Operating Characteristic)曲線,它源於“二戰”中用於敵機檢測的雷達信號分析技術。
具體來說,據說在二戰期間,軍隊中雷達兵的任務是通過觀察顯示屏的雷達信號來判斷是不是有敵人來了,在以下兩種情況下顯示屏上會有雷達信號:
- 有敵機來襲(真實情況下的正例)
- 有飛鳥(真實情況下的負例)
這個時候不同的雷達兵就可能會報出不同的結果:
- 假如這個雷達兵比較謹慎,只要有信號就報告有敵情(可以看作更重視“查全率”),就會增加誤報的風險;
- 假如這個雷達兵比較大膽,只要有信號就認為是鳥(可以看作更重視“查准率”),就會增加漏報的風險。
這樣就有了我們針對這個問題的“混淆矩陣”:
理想情況下,希望每個雷達兵能夠好好研究飛機和飛鳥信號的區別,進行准確的判斷。但是現實問題是,每個雷達兵的判斷標准不一,謹慎的容易出現誤報,膽大的容易出現漏報。
針對以上問題,雷達兵的上級管理者匯總了每個雷達兵的匯報特點,尤其是他們的漏報和誤報的概率,並將這些概率基於二維坐標系繪制成一個圖形:
- 縱坐標為敏感性(真陽性率):表示在所有敵人來襲(即真實情況為正例,TP+FN)的事件中,每個雷達兵准確預報(即TP)的概率;
- 橫坐標為1-特異性(假陽性率):表示在所有飛鳥信號(即真實情況為反例,TN+FP)中,每個雷達兵預報錯誤(即FP)的概率;
每個雷達兵的預報標准不同,所以得到的敏感性和特異性的組合也不同。一個雷達兵的敏感性和特異性的組合正好在一條曲線上,這條曲線就是ROC曲線。
到這里就不難理解ROC曲線為什么叫做“受試者工作特征”曲線了,在這里受試者就是指雷達兵,繪制這個曲線的目的就是觀察雷達兵的工作特征,所以叫做受試者工作特征曲線。
在機器學習中,受試者就是我們的學習器了,繪制曲線的目的就是觀察學習器的工作性能。
2.2 ROC曲線的繪制
與分類問題中模型的性能度量(一)中介紹的P-R曲線類似,我們根據學習器的預測結果對樣例進行排序,按此順序逐個把樣本作為正例進行預測,每次計算出兩個重要量的值:
- 真正例率(True Positive Rate,TPR),也稱為靈敏度(Sensitivity),
- 假正例率(False Positive Rate,FPR),也稱為1-特異度(Specificity),
注:特異度=
結合二分類問題的混淆矩陣我們知道,TP+FN其實就是所有真實情況為正的樣本數,FP+TN其實就是所有真實情況為反的樣本數,那么我們令P=TP+FN,N=FP+TN,就可以得到簡化版的公式(便於理解):
- ,這時很容易看出,真正例率其實就是在所有真實情況下為正的樣例中,預測為正的樣本所占比例;
- ,假正例率其實就是在所有真實情況下為反的樣例中,預測為正的樣本所占比例;
以FPR作為橫軸、TPR作為縱軸作圖,就得到了“ROC曲線”,顯示ROC曲線的圖叫做“ROC圖”,如下所示:
對ROC圖的幾點解釋:
- 圖(a)中的對角線(圖中虛線),對應於“隨機猜測”模型;
- ROC曲線越靠近左上角,性能越好;
- 點(0,1)(左上角),對應於將所有正例排在所有反例之前的“理想模型”(左上角對應的點為(0,1),也就是FPR=0,TPR=1,結合上面的公式,可以得到這時FP=0,FN=0,模型對所有的樣本分類都正確,也就是將真實為正的預測為正,真實為反的預測為反,沒有假正、假反。)
- ROC曲線與P-R曲線不一樣的地方在於,當正反樣例分布發生劇烈變化的時候:ROC曲線的形狀基本能夠保持不變;P-R曲線的形狀一般會發生劇烈變化。
現實任務中,通常是利用有限個測試樣例來繪制ROC圖,此時僅能獲得有限個(FPR,TPR)坐標對,無法產生圖(a)中光滑的ROC曲線,只能繪制出圖(b)所示的近似ROC曲線。繪制過程如下:
- 1.給定 個正例和 個反例,根據學習器預測結果對樣例進行排序
- 2.設置不同的分類閾值:
2.1 把分類閾值設為最大,即把所有樣例均預測為反例,此時TPR=FPR=0。在坐標(0,0)處標記一個點。
2.2 將分類閾值依次設為每個樣例的預測值,即依次將每個樣例划分為正例。設前一個標記點坐標為 :
當前若為真正例(TP),則對應標記點的坐標為 ;
當前若為假正例(FP),則對應標記點的坐標為 ; - 3.最后用線段連接相鄰點即得ROC曲線
3.AUC(Area Under ROC Curve)
3.1 AUC來歷
進行學習器比較時,與P-R圖類似:
- 若一個學習器的ROC曲線被另一個學習器的曲線完全“包住”,則可斷言后者的性能優於前者;
- 若兩個學習器的ROC曲線發生交叉,則難以一般性地斷言兩者哪個更優。此時如果一定要進行比較,則較為合理的判據是:比較ROC曲線下的面積,即AUC(Area Under ROC Curve)。
3.2 AUC幾何意義
從定義可知,AUC可通過對ROC曲線下各部分的面積求和而得。
假定ROC曲線是由坐標
的點按序連接而成
,參見上面圖(b),則AUC可估算為:
3.3 AUC計算
形式化地看,AUC考慮的是樣本預測的排序質量,因此它與排序誤差有緊密聯系。給定
個正例和
個反例,令
和
分別表示正、反例集合,則排序“損失”(loss)定義為:
,其中Ⅱ()為指示函數,在為正和假時分別取值為1,0。
即考慮每一對正、反例,
- 若正例的預測值小於反例(即真實情況為正例的樣本,被預測為正例的概率,小於,真實情況為負例的樣本,被預測為正例的概率),則記1個“罰分”;
- 若正例的預測值與反例相等,則記0.5個“罰分”。
容易看出,
對應的是ROC曲線之上的面積:若一個正例在ROC曲線上對應標記點的坐標為(x,y),則x恰是排序在其之前的反例所占的比例,即假正例率。因此有AUC計算公式:
3.4 理解AUC的意義
通過AUC的定義我們知道了AUC是什么,怎么算,但是它的意義是什么呢。
3.4.1 從Mann-Whitney U test角度理解
實際上AUC和Mann-Whitney U test有密切的聯系。從Mann-Whitney U test的角度來理解AUC:
- 1.從所有正例(即 )中隨機選取一個樣本,從所有反例(即 )中隨機選取一個樣本;
- 2.然后根據我們的學習器對兩個隨機樣本進行預測,把正例預測為正的概率為p1,把反例預測為正的概率為p2;
- 3.p1>p2的概率就等於AUC
3.4.2 從AUC計算公式角度理解
表示:任取一對正反例(真實情況),把(真實情況下的)正例預測為正的概率 把(真實情況下的)反例預測為正的概率,的概率。
那么AUC,即 就相應地表示:任取一對正反例(真實情況),把(真實情況下的)正例預測為正的概率 把(真實情況下的)反例預測為真的概率,的概率。
3.4.3 一句話介紹AUC
從上面兩個角度總結來看,對AUC比較全面的總結:
- AUC就是,從測試集中隨機(即任取)選定一個正例、一個反例,分類器輸出該正例為正的那個概率值,比,分類器輸出該反例為正的那個概率值,要大,的可能性。
還有一句更加簡潔的總結:
- 從測試集中任取一個正例、一個反例,經分類器輸出,正例得分大於負例得分的概率。(對於得分的理解,見邏輯回歸模型中1.1.2 對假設函數輸出的解釋)
3.5 為什么用AUC
AUC的優勢:AUC的計算方法同時考慮了分類器對於正例和反例的分類能力,在樣本不均衡的情況下,依然能夠對分類器作出合理的評價。(即AUC對樣本類別是否均衡並不敏感,這也是不均衡樣本通常用AUC評價分類器性能的一個原因。)
例如:在反欺詐場景,設非欺詐類樣本為正例,反例占比很少(假設為0.1%):
- 如果使用准確率評估,把所有樣本預測為正,便可以獲得99.9%的准確率;
- 但是如果使用AUC,把所有樣本預測為正例,TPR=FPR=1,AUC僅為0.5,成功規避了樣本不均衡帶來的問題。
3.6 AUC的一般判斷標准
- = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。
- < 0.5,比隨機猜測還差;但只要總是反預測而行,就優於隨機猜測。
- 0.5 - 0.7:效果較低,但用於預測股票已經很不錯了
- 0.7 - 0.85:效果一般
- 0.85 - 0.95:效果很好,需要選定合適閾值
- 0.95 - 1:效果非常好,但一般不太可能
參考:
1.《機器學習》2.3,周志華
2.BAT面試官最喜歡問的問題之一:ROC曲線
3.如何理解機器學習和統計中的AUC(重點前5個回答)
4.對AUC計算公式和幾何意義的理解