.
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 | ||||
實 | 1 | d, True Positive | c, False Negative | c+d, Actual Positive |
際 | 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)。
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的比較,然後也是很容易畫出來,很容易解釋。
參考資料
- Mithat Gonen. 2007. Analyzing Receiver Operating Characteristic Curves with SAS. Cary, NC: SAS Institute Inc.
- Mike Patetta. 2008. Categorical Data Analysis Using Logistic Regression Course Notes. Cary, NC: SAS Institute Inc.
- Dan Kelly, etc. 2007. Predictive Modeling Using Logistic Regression Course Notes. Cary, NC: SAS Institute Inc.
- Receiver operating characteristic, seehttp://en.wikipedia.org/wiki/Receiver_operating_characteristic
- The magnificent ROC, see http://www.anaesthetist.com/mnm/stats/roc/Findex.htm
del.icio.us Tags: Wilcoxon-Mann-Whitney, Confusion Matrix, 覆寫率, Logistic回歸, SAS, Sensitiveity, Specificity, 分類模型, 命中率, 資料挖掘, 混淆矩陣, ROC, AUC, Receiver Operating Characteristic Curve, 接受者操作特性曲線 This entry was posted in 資料挖掘與機器學習 , 生物與醫學統計 , 統計圖形 and tagged AUC , Confusion Matrix , Logistic回歸 , Receiver Operating Characteristic Curve , ROC , SAS , Sensitiveity , Specificity , Wilcoxon-Mann-Whitney , 分類模型 , 命中率 , 接受者操作特性曲線 , 資料挖掘 , 混淆矩陣 , 覆寫率 by 胡江堂 . Bookmark the permalink .