分类模型的性能评估——以SAS Logistic回归为例(3): Lift和Gain
書接前文。跟ROC類似,Lift(提升)和Gain(增益)也一樣能簡單地從以前的Confusion Matrix以及Sensitivity、Specificity等信息中推導(dǎo)而來,也有跟一個baseline model的比較,然后也是很容易畫出來,很容易解釋。以下先修知識,包括所需的數(shù)據(jù)集:
一些準(zhǔn)備
說,混淆矩陣(Confusion Matrix)是我們永遠(yuǎn)值得信賴的朋友:
| ? | ? | 預(yù)測 | ? | ? |
| ? | ? | 1 | 0 | ? |
| 實(shí) | 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 | ? |
幾個術(shù)語需要隨時記起:
1. Sensitivity(覆蓋率,True Positive Rate)=正確預(yù)測到的正例數(shù)/實(shí)際正例總數(shù)
Recall (True Positive Rate,or Sensitivity) =true positive/total actual positive=d/c+d
2. PV+ (命中率,Precision, Positive Predicted Value) =正確預(yù)測到的正例數(shù)/預(yù)測正例總數(shù)
Precision (Positive Predicted Value, PV+) =true positive/ total predicted positive=d/b+d
3. Specificity (負(fù)例的覆蓋率,True Negative Rate) =正確預(yù)測到的負(fù)例個數(shù)/實(shí)際負(fù)例總數(shù)
Specificity (True Negative Rate) =true negative/total actual negative=a/a+b
首先記我們valid數(shù)據(jù)中,正例的比例為pi1(念做pai 1),在我們的例子中,它等于c+d/a+b+c+d=0.365。單獨(dú)提出pi1,是因為有時考慮oversampling后的一些小調(diào)整,比如正例的比例只有0.001,但我們把它調(diào)整為0.365(此時要在SAS proc logistic回歸的score語句加一個priorevent=0.001選項)。本文不涉及oversampling。現(xiàn)在定義些新變量:
Ptp=proportion of true positives=d/a+b+c+d=(c+d/a+b+c+d)*(d/c+d) =pi1* Sensitivity,正確預(yù)測到的正例個數(shù)占總觀測值的比例
Pfp=proportion of false positives=b/a+b+c+d= (a+b/a+b+c+d)*(b/a+b) = (1-c+d/a+b+c+d)*(1-a/a+b) = (1-pi1)*(1- Specificity) ,把負(fù)例錯誤地預(yù)測成正例的個數(shù)占總數(shù)的比例
Depth=proportion allocated to class 1=b+d/a+b+c+d=Ptp+Pfp,預(yù)測成正例的比例
PV_plus=Precision (Positive Predicted Value, PV+) = d/b+d=Ptp/depth,正確預(yù)測到的正例數(shù)占預(yù)測正例總數(shù)的比例
Lift= (d/b+d)/(c+d/a+b+c+d)=PV_plus/pi1,提升值,解釋見下節(jié)。
以上都可以利用valid_roc數(shù)據(jù)計算出來:
%let pi1=0.365;
data valid_lift;
set valid_roc;
cutoff=_PROB_;
Ptp=&pi1*_SENSIT_;
Pfp=(1-&pi1)*_1MSPEC_;
depth=Ptp+Pfp;
PV_plus=Ptp/depth;
lift=PV_plus/&pi1;
keep cutoff _SENSIT_ _1MSPEC_ depth PV_plus lift;
run;
先前我們說ROC curve是不同閾值下Sensitivity和1-Specificity的軌跡,類似,
Lift chart是不同閾值下Lift和Depth的軌跡
Gains chart是不同閾值下PV+和Depth的軌跡
Lift
Lift = (d/b+d)/(c+d/a+b+c+d)=PV_plus/pi1),這個指標(biāo)需要多說兩句。它衡量的是,與不利用模型相比,模型的預(yù)測能力“變好”了多少。不利用模型,我們只能利用“正例的比例是c+d/a+b+c+d”這個樣本信息來估計正例的比例(baseline model),而利用模型之后,我們不需要從整個樣本中來挑選正例,只需要從我們預(yù)測為正例的那個樣本的子集(b+d)中挑選正例,這時預(yù)測的準(zhǔn)確率為d/b+d。
顯然,lift(提升指數(shù))越大,模型的運(yùn)行效果越好。如果這個模型的預(yù)測能力跟baseline model一樣,那么d/b+d就等于c+d/a+b+c+d(lift等于1),這個模型就沒有任何“提升”了(套一句金融市場的話,它的業(yè)績沒有跑過市場)。這個概念在數(shù)據(jù)庫營銷中非常有用,舉個例子:
比如說你要向選定的1000人郵寄調(diào)查問卷(a+b+c+d=1000)。以往的經(jīng)驗告訴你大概20%的人會把填好的問卷寄回給你,即1000人中有200人會對你的問卷作出回應(yīng)(response,c+d=200),用統(tǒng)計學(xué)的術(shù)語,我們說baseline response rate是20%(c+d/a+b+c+d=20%)。
如果你現(xiàn)在就漫天郵寄問卷,1000份你期望能收回200份,這可能達(dá)不到一次問卷調(diào)查所要求的回收率,比如說工作手冊規(guī)定郵寄問卷回收率要在25%以上。
通過以前的問卷調(diào)查,你收集了關(guān)于問卷采訪對象的相關(guān)資料,比如說年齡、教育程度之類。利用這些數(shù)據(jù),你確定了哪類被訪問者對問卷反應(yīng)積極。假設(shè)你已經(jīng)利用這些過去的數(shù)據(jù)建立了模型,這個模型把這1000人分了類,現(xiàn)在你可以從你的千人名單中挑選出反應(yīng)最積極的100人來(b+d=100),這10%的人的反應(yīng)率 (response rate)為60%(d/b+d=60%,d=60)。那么,對這100人的群體(我們稱之為Top 10%),通過運(yùn)用我們的模型,相對的提升(lift value)就為60%/20%=3;換句話說,與不運(yùn)用模型而隨機(jī)選擇相比,運(yùn)用模型而挑選,效果提升了3倍。
上面說lift chart是不同閾值下Lift和Depth的軌跡,先畫出來:
symbol i=join v=none c=black;
proc gplot data=valid_lift;
plot lift*depth;
run; quit;
上圖的縱坐標(biāo)是lift,意義已經(jīng)很清楚。橫坐標(biāo)depth需要多提一句。以前說過,隨著閾值的減小,更多的客戶就會被歸為正例,也就是depth(預(yù)測成正例的比例)變大。當(dāng)閾值設(shè)得夠大,只有一小部分觀測值會歸為正例,但這一小部分(一小撮)一定是最具有正例特征的觀測值集合(用上面數(shù)據(jù)庫營銷的例子來說,這一部分人群對郵寄問卷反應(yīng)最為活躍),所以在這個depth下,對應(yīng)的lift值最大。
同樣,當(dāng)閾值設(shè)定得足夠的小,那么幾乎所有的觀測值都會被歸為正例(depth幾乎為1)——這時分類的效果就跟baseline model差不多了,相對應(yīng)的lift值就接近于1。
一個好的分類模型,就是要偏離baseline model足夠遠(yuǎn)。在lift圖中,表現(xiàn)就是,在depth為1之前,lift一直保持較高的(大于1的)數(shù)值,也即曲線足夠的陡峭。
/*注:在一些應(yīng)用中(比如信用評分),會根據(jù)分類模型的結(jié)果,把樣本分成10個數(shù)目相同的子集,每一個子集稱為一個decile,其中第一個decile擁有最多的正例特征,第二個decile次之,依次類推,以上lift和depth組合就可以改寫成lift和decile的組合,也稱作lift圖,含義一樣。剛才提到,“隨著閾值的減小,更多的客戶就會被歸為正例,也就是depth(預(yù)測成正例的比例)變大。當(dāng)閾值設(shè)得夠大,只有一小部分觀測值會歸為正例,但這一小部分(第一個decile)一定是最具有正例特征的觀測值集合。”*/
Gains
Gains (增益) 與 Lift (提升)相當(dāng)類似:Lift chart是不同閾值下Lift和Depth的軌跡,Gains chart是不同閾值下PV+和Depth的軌跡,而PV+=lift*pi1= d/b+d(見上),所以它們顯而易見的區(qū)別就在于縱軸刻度的不同:
symbol i=join v=none c=black;
proc gplot data=valid_lift;
plot pv_plus*depth;
run; quit;
上圖閾值的變化,含義與lift圖一樣。隨著閾值的減小,更多的客戶就會被歸為正例,也就是depth(預(yù)測成正例的比例,b+d/a+b+c+d)變大(b+d變大),這樣PV+(d/b+d,正確預(yù)測到的正例數(shù)占預(yù)測正例總數(shù)的比例)就相應(yīng)減小。當(dāng)閾值設(shè)定得足夠的小,那么幾乎所有的觀測值都會被歸為正例(depth幾乎為1),那么PV+就等于數(shù)據(jù)中正例的比例pi1了(這里是0.365。在Lift那一節(jié)里,我們說此時分類的效果就跟baseline model差不多,相對應(yīng)的lift值就接近于1,而PV+=lift*pi1。Lift的baseline model是縱軸上恒等于1的水平線,而Gains的baseline model是縱軸上恒等于pi1的水平線)。顯然,跟lift 圖類似,一個好的分類模型,在閾值變大時,相應(yīng)的PV+就要變大,曲線足夠陡峭。
/*注:我們一般看到的Gains Chart,圖形是往上走的,咋一看跟上文相反,其實(shí)道理一致,只是坐標(biāo)選擇有差別,不提。*/
總結(jié)和下期預(yù)告:K-S
以上提到的ROC、Lift、Gains,都是基于混淆矩陣及其派生出來的幾個指標(biāo)(Sensitivity和Specificity等等)。如果愿意,你隨意組合幾個指標(biāo),展示到二維空間,就是一種跟ROC平行的評估圖。比如,你plot Sensitivity*Depth一把,就出一個新圖了,——很不幸,這個圖叫做Lorentz Curve(勞倫茲曲線),不過你還可以嘗試一下別的組合,然后湊一個合理的解釋。
Gains chart是不同閾值下PV+和Depth的軌跡(Lift與之類似),而ROC是sensitivity和1-Specificity的對應(yīng),前面還提到,Sensitivity(覆蓋率,True Positive Rate)在欺詐監(jiān)控方面更有用(所以ROC更適合出現(xiàn)在這個場合),而PV+在數(shù)據(jù)庫營銷里面更有用(這里多用Gains/Lift)。
混淆矩陣告一段落。接下來將是K-S(Kolmogorov-Smirnov)。參考資料同上一篇。
from: http://cos.name/2009/02/measure-classification-model-performance-lift-gain/
總結(jié)
以上是生活随笔為你收集整理的分类模型的性能评估——以SAS Logistic回归为例(3): Lift和Gain的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分类模型的性能评估——以SAS Logi
- 下一篇: ASP.NET MVC案例教程(基于AS