模型驗證的常用“武器”—ROC和AUC

? ? ? 每次做完二值分類模型(eg: Logistic Regression, Decision Tree, Neural Network etc.),我們經常會面對一連串的模型驗證指標,最常用的有ROC&AUC、Gini、PS、K-S等等。那我們不禁會問:

1. 這個指標怎么定義?

2.?怎么實現指標計算?

3.?為什么用這個指標?

4. 怎么用它評價模型?

?事實上,如果不明白這些評估指標的背后的直覺,就很可能陷入一種機械的解釋中,不敢多說一句,就怕哪里說錯。在這里就通過這篇文章,針對上述4個問題,介紹一下ROC&AUC。

問題1: ROC&AUC的定義分別是什么?

ROC曲線全稱為受試者工作特征曲線 (receiver operating characteristic curve),它是根據一系列不同的二分類方式(分界值或決定閾),以真陽性率(敏感性)為縱坐標,假陽性率(1-特異性)為橫坐標繪制的曲線

???? AUC(Area Under Curve)被定義為ROC曲線下的面積。我們往往使用AUC值作為模型的評價標準是因為很多時候ROC曲線并不能清晰的說明哪個分類器的效果更好,而作為一個數值,對應AUC更大的分類器效果更好。

注意:ROC是一條曲線是一條曲線啊,并不是一個值啊!真正通過計量手段比較模型功效的是AUC!!

問題2: AUC是如何計算得到的?

? ? ? 既然我們已經了解到AUC其實就是ROC曲線下的面積,那我們首先要理解ROC曲線從何而來,這其中必定蘊含了ROC&AUC蘊含的價值。

作為理解ROC曲線的鋪墊,我們還要先了解一下混淆矩陣(Confusion Matrix)。顯然,一個完美的二分類模型就是,如果一個客戶實際上屬于類別good,也預測成good(True Positive類),處于類別bad,也就預測成bad(True Negative類),也就是完全預測準確。但從實際模型情況來看,往往會有一些實際上是good的客戶,經過我們的模型,被預測為bad(False Negative類),對一些bad的客戶,卻預測他為good(False Positive類)。事實上,我們需要知道所建的模型到底預測對了多少,預測錯了多少,然而混淆矩陣就把所有這些信息,都歸到這樣一個表里。

實際數據中,客戶只有good/bad兩種可能,模型預測結果同樣也只有這兩種可能,可能匹配可能不匹配。匹配的好說,Negative預測為Negative,或者?Positive預測為Positive,這就是True Negative(其中Negative是指預測成Negative)和True Positive(其中Positive是指預測成Positive)的情況。

? ? ? ?同樣,犯錯也只有兩種情況。實際是Positive,預測成Negative ,這就是False Negative;實際是Negative,預測成Positive,這就是False Positive;

明白這些概念后,不難理解以下幾組常用的評估指標:

(事實上ROC曲線只用到其中的3和4)

1. 準確率accuracy: 針對整個預測情況。預測正確的/總實例數 = (TP+TN)/(P+N)

2. 誤分類率error rate: 針對整個情況。預測錯誤的/總實例數 = (FP+FN)/(P+N)

3. 召回率recall/敏感性sensitivity: 針對good的正確覆蓋了。預測對的good實例/實際good的實例 = TP/P

4. 特異性specificity: 針對bad的預測正確率。預測對的bad實例/實際的bad實例數 = TN/N

5. 命中率precision: 針對good的預測正確率。預測對的good實例/預測的good實例數 = TP/(TP+FP)

6. Type I error: False Discovery Rate(FDR, false alarm) = 1- precision

7. Type II error: miss rate = 1- sensitivity

? ? ? 理解了混淆矩陣后,ROC曲線就不難理解了。事實上,ROC曲線就是不同的閾值下,敏感性(Sensitivity)和1-特異性(Specificity)的關系曲線。其中ROC曲線的橫軸為(1-特異性),即1-預測對的bad實例/實際的bad實例數;縱軸為敏感性,即預測對的good實例/實際good的實例,易知ROC曲線的橫軸縱軸的值域均為[0,1]。


下面我們從ROC曲線橫軸值從0到1取三個點進行展示,以計算對應的縱軸值:

1. 1-特異性=0

?1-特異性=0 意味著預測對的bad實例/實際的bad實例數=1,也就是說所有bad都被預測為bad,如上圖所示。此時,對應的縱軸值敏感性=TP/P=0.45。因此對應ROC曲線上的點(0,0.45)。

2. 0<1-特異性<1

? ? ? 隨著橫軸值從0到1的增加,通過上圖可以表達為分割線的左移,如下圖。

?可以看到,隨著分割線的左移,也就是特異性逐漸減小,敏感性則逐漸增加。此時1-特異性=0.2,對應的敏感性=0.85。因此對應ROC曲線上的點(0.2,0.85)。

3. 1-特異性—>1

?隨著分界線的繼續左移,達到樣本分數最小值時,所有樣本都被預測為good,此時1-特異性=0.98,對應的縱軸值敏感性=,1。對應ROC曲線上的點(0.98,1)。

? ? ? 好了,每個點都能畫了,那ROC曲線也就不在話下了,AUC的計算也就順其自然的進行了。

? ? ? 實際應用中,對于最常用的Logistic regression,SAS的PROC LOGISTIC可以輕松解決ROC圖像繪制以及AUC計算的問題。

代碼如下

proc logistic?data=dataname?plots(only)=roc;

model?y=x1 x2 x3... xn;

run;

運行程序即可得到ROC曲線以及相應AUC=0.8005。

問題3: AUC值和模型功效有何關系?

?我們不妨先固定某一橫軸值,也就是說固定了分割線相對bad樣本的位置關系,根據敏感性的定義(敏感性=預測對的good實例/實際good的實例 ),不難發現在有相等橫軸值的情況下,縱軸值(敏感度)越大,模型功效越好。

? ? ??下圖中,對于相同的橫軸值(固定壞樣本分布和分割線),若模型的好樣本結果的分布情況為Distribution2,其相應的縱軸值顯然大于Distribution1的情況,也就是y2>y1。 同樣,任意移動分割線(也就是對任意橫軸值),都可以得到Distribution2的縱軸值大于等于Distribution1。那也很顯然情況2的模型比情況1具備更強的區分能力。這是最簡單的比較情況,如果兩個模型并不是對于任意橫軸值都存在一致的縱軸值大小區分,我們該怎么比較呢?


這里我們再來回顧一下AUC是什么。AUC事實上是ROC曲線下的面積,事實上也是敏感性在x屬于[0,1]區間內的積分!既然對于每個固定橫軸值,都存在縱軸值越大模型功效越好這個說法,那么通過計量面積來比較模型的功效依舊成立,同時AUC還簡化了指標的維度,將2維的ROC圖轉化為1維數值,簡化的同時還提供了模型與模型之間比較的契機,這也就很容易理解我們為什么要使用AUC值來展示模型的區分能力了!

問題4: 如何使用AUC值評價模型?

? ? ? ROC曲線下的面積值(AUC)正常情況下在0.5和1之間。應用中通常使用以下標準評價模型功效。

AUC?評價

? ? ? ?0.9-1? ? ? ? ? ? 高準確性

? ? ?0.7-0.9? ? ? ? 有一定準確性

? ? ?0.5-0.7? ? ? ? 有較低準確性

? ? ? ?0-0.5? ? ? 不符合真實情況

? ? ? ?事實上,當模型的ROC=1時,模型將所有好壞樣本完全分離,也就是說低分區全是bad樣本,高分區全是good樣本,兩組樣本在得分上沒有交集,這也被成為“完美模型”。當然,在實際建模中,“完美模型”顯然是不存在的。

? ? ? ?當模型的ROC=0.5時,模型實際上相當于一個隨機排序模型,也就是和說生成隨機數評分沒啥區別,因此無法對我們的模型使用場景提供支持。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370

推薦閱讀更多精彩內容