日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模型验证的常用“武器”—ROC和AUC peiyang

發布時間:2025/3/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模型验证的常用“武器”—ROC和AUC peiyang 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每次做完二值分類模型(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時,模型實際上相當于一個隨機排序模型,也就是和說生成隨機數評分沒啥區別,因此無法對我們的模型使用場景提供支持。



作者:peiyang
鏈接:https://www.jianshu.com/p/b3d07879b75f
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

總結

以上是生活随笔為你收集整理的模型验证的常用“武器”—ROC和AUC peiyang的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。