分类模型的性能评估——以SAS Logistic回归为例(2): ROC和AUC
ROC
上回我們提到,ROC曲線就是不同的閾值下,以下兩個變量的組合(如果對Sensitivity和Specificity兩個術語沒有概念,不妨返回,《分類模型的性能評估——以SAS Logistic回歸為例(1): 混淆矩陣》,強烈建議讀者對著看):
Sensitivity(覆蓋率,True Positive Rate)
1-Specificity (Specificity, 負例的覆蓋率,True Negative Rate)
二話不說,先把它畫出來(以下腳本的主體是標紅部分,數據集valid_roc,還是出自上面提到的那篇):
axis order=(0 to 1 by .1) label=none length=4in;
symbol i=join v=none c=black;
symbol2 i=join v=none c=black;
proc gplot data = valid_roc;
plot _SENSIT_*_1MSPEC_ _1MSPEC_*_1MSPEC_
/ overlay vaxis=axis haxis=axis;
run; quit;
上圖那條曲線就是ROC曲線,橫軸是1-Specificity,縱軸是Sensitivity。以前提到過,隨著閾值的減小(更多的客戶就會被歸為正例),Sensitivity和1-Specificity也相應增加(也即Specificity相應減少),所以ROC呈遞增態勢(至于ROC曲線凹向原點而非凸向原點,不知道有無直觀的解釋,不提)。那條45度線是作為參照(baseline model)出現的,就是說,ROC的好壞,乃是跟45度線相比的,怎么講?
回到以前,我們分析valid數據,知道有36.5%的bad客戶(Actual Positive )和63.5%的good客戶(Actual Negative)。這兩個概率是根據以往的數據計算出來的,可以叫做“先驗概率”( prior probability)。后來,我們用logistic回歸模型,再給每個客戶算了一個bad的概率,這個概率是用模型加以修正的概率,叫做“后驗概率”(Posterior Probability)。
| ? | ? | 預測 | ? | ? |
| ? | ? | 1 | 0 | ? |
| 實 | 1 | d, True Positive | c, False Negative | c+d, Actual Positive |
| 際 | 0 | b, False Positive | a, True Negative | a+b, Actual Negative |
| ? | ? | b+d, Predicted Positive | a+c, Predicted Negative | ? |
如果不用模型,我們就根據原始數據的分布來指派,隨機地把客戶歸為某個類別,那么,你得到的True Positive對False Positive之比,應該等于Actual Positive對Actual Negative之比(你做得跟樣本分布一樣好)——即,d/b=(c+d)/(a+b),可以有(d/c+d)/(b/a+b)=1,而這正好是Sensitivity/(1-Specificity)。在不使用模型的情況下,Sensitivity和1-Specificity之比恒等于1,這就是45度線的來歷。一個模型要有所提升,首先就應該比這個baseline表現要好。ROC曲線就是來評估模型比baseline好壞的一個著名圖例。這個可能不夠直觀,但可以想想線性回歸的baseline model:
如果不用模型,對因變量的最好估計就是樣本的均值(上圖水平紅線)。綠線是回歸線(模型),回歸線與水平線之間的偏離,稱作Explained Variability, 就是由模型解釋了的變動,這個變動(在方差分析里,又稱作model sum of squares, SSM)越大,模型表現就越好了(決定系數R-square標準)。同樣的類比,ROC曲線與45度線偏離越大,模型的效果就越好。最好好到什么程度呢?
在最好的情況下,Sensitivity為1(正確預測到的正例就剛好等于實際的正例總數),同時Specificity為1(正確預測到的負例個數就剛好等于實際的負例數),在上圖中,就是左上方的點(0,1)。因此,ROC曲線越往左上方靠攏,Sensitivity和Specificity就越大,模型的預測效果就越好。同樣的思路,你還可以解釋為什么ROC曲線經過點(0,0)和(1.1),不提。
AUC, Area Under the ROC Curve
ROC曲線是根據與45度線的偏離來判斷模型好壞。圖示的好處是直觀,不足就是不夠精確。到底好在哪里,好了多少?這就要涉及另一個術語,AUC(Area Under the ROC Curve,ROC曲線下的面積),不過也不是新東西,只是ROC的一個派生而已。
回到先前那張ROC曲線圖。45度線下的面積是0.5,ROC曲線與它偏離越大,ROC曲線就越向左上方靠攏,它下面的面積(AUC)也就應該越大。我們就可以根據AUC的值與0.5相比,來評估一個分類模型的預測效果。
SAS的Logistic回歸能夠后直接生成AUC值。跑完上面的模型,你可以在結果報告的Association Statistics找到一個叫c的指標,它就是AUC(本例中,c=AUC=0.803,45度線的c=0.5)。
/*注:以上提到的c不是AUC里面那個’C’。這個c是一個叫Wilcoxon-Mann-Whitney 檢驗的統計量。這個說來話長,不過這個c卻等價于ROC曲線下的面積(AUC)。*/
ROC、AUC:SAS9.2一步到位
SAS9.2有個非常好的新功能,叫ODS Statistical Graphics,有興趣可以去它主頁看看。在SAS9.2平臺提交以下代碼,Logistic回歸參數估計和ROC曲線、AUC值等結果就能一起出來(有了上面的鋪墊,就不懼這個黑箱了):
ods graphics on;
proc logistic data=train plots(only)=roc;
model good_bad=checking history duration savings property;
run;
ods graphics off;
這個ROC圖貌似還漂亮些,眼神好能看見標出來的AUC是0.8029。 最后提一句,ROC全稱是Receiver Operating Characteristic Curve,中文叫“接受者操作特性曲線”,江湖黑話了(有朋友能不能出來解釋一下,誰是Receiver,為什么Operating,何謂Characteristic——這個看著好像是Sensitivity和Specificity),不過并不妨礙我們使用ROC作為模型評估的工具。
下期預告:Lift和Gain
不多說,只提一句,跟ROC類似,Lift(提升)和Gain(增益)也一樣能簡單地從以前的Confusion Matrix以及Sensitivity、Specificity等信息中推導而來,也有跟一個baseline model的比較,然后也是很容易畫出來,很容易解釋。
參考資料
from: http://cos.name/2008/12/measure-classification-model-performance-roc-auc/
總結
以上是生活随笔為你收集整理的分类模型的性能评估——以SAS Logistic回归为例(2): ROC和AUC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分类模型的性能评估——以SAS Logi
- 下一篇: 分类模型的性能评估——以SAS Logi