Recall (True Positive Rate,or Sensitivity) =true positive/total actual positive=d/c+d
2. PV+ (命中率,Precision, Positive Predicted Value) =正确預測到的正例數/預測正例總數
Precision (Positive Predicted Value, PV+) =true positive/ total predicted positive=d/b+d
3. Specificity(負例的覆寫率,True Negative Rate) =正确預測到的負例個數/實際負例總數
Specificity (True Negative Rate) =true negative/total actual negative=a/a+b
首先記我們valid資料中,正例的比例為pi1(念做pai 1),在我們的例子中,它等于c+d/a+b+c+d=0.365。單獨提出pi1,是因為有時考慮oversampling後的一些小調整,比如正例的比例隻有0.001,但我們把它調整為0.365(此時要在SAS proc logistic回歸的score語句加一個priorevent=0.001選項)。本文不涉及oversampling。現在定義些新變量:Ptp=proportion of true positives=d/a+b+c+d=(c+d/a+b+c+d)*(d/c+d) =pi1* Sensitivity,正确預測到的正例個數占總觀測值的比例
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) ,把負例錯誤地預測成正例的個數占總數的比例
Depth=proportion allocated to class 1=b+d/a+b+c+d=Ptp+Pfp,預測成正例的比例
PV_plus=Precision (Positive Predicted Value, PV+) = d/b+d=Ptp/depth,正确預測到的正例數占預測正例總數的比例
Lift= (d/b+d)/(c+d/a+b+c+d)=PV_plus/pi1,提升值,解釋見下節。
以上都可以利用valid_roc資料計算出來:%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),這個名額需要多說兩句。它衡量的是,與不利用模型相比,模型的預測能力“變好”了多少。不利用模型,我們隻能利用“正例的比例是c+d/a+b+c+d”這個樣本資訊來估計正例的比例(baseline model),而利用模型之後,我們不需要從整個樣本中來挑選正例,隻需要從我們預測為正例的那個樣本的子集(b+d)中挑選正例,這時預測的準确率為d/b+d。
顯然,lift(提升指數)越大,模型的運作效果越好。如果這個模型的預測能力跟baseline model一樣,那麼d/b+d就等于c+d/a+b+c+d(lift等于1),這個模型就沒有任何“提升”了(套一句金融市場的話,它的業績沒有跑過市場)。這個概念在資料庫營銷中非常有用,舉個例子:
比如說你要向標明的1000人郵寄調查問卷(a+b+c+d=1000)。以往的經驗告訴你大概20%的人會把填好的問卷寄回給你,即1000人中有200人會對你的問卷作出回應(response,c+d=200),用統計學的術語,我們說baseline response rate是20%(c+d/a+b+c+d=20%)。
如果你現在就漫天郵寄問卷,1000份你期望能收回200份,這可能達不到一次問卷調查所要求的回收率,比如說工作手冊規定郵寄問卷回收率要在25%以上。
通過以前的問卷調查,你收集了關于問卷采訪對象的相關資料,比如說年齡、教育程度之類。利用這些資料,你确定了哪類被通路者對問卷反應積極。假設你已經利用這些過去的資料建立了模型,這個模型把這1000人分了類,現在你可以從你的千人名單中挑選出反應最積極的100人來(b+d=100),這10%的人的反應率 (response rate)為60%(d/b+d=60%,d=60)。那麼,對這100人的群體(我們稱之為Top 10%),通過運用我們的模型,相對的提升(lift value)就為60%/20%=3;換句話說,與不運用模型而随機選擇相比,運用模型而挑選,效果提升了3倍。
上面說lift chart是不同門檻值下Lift和Depth的軌迹,先畫出來:symbol i=join v=none c=black;
proc gplot data=valid_lift;
plot lift*depth;
run; quit;
上圖的縱坐标是lift,意義已經很清楚。橫坐标depth需要多提一句。以前說過,随着門檻值的減小,更多的客戶就會被歸為正例,也就是depth(預測成正例的比例)變大。當門檻值設得夠大,隻有一小部分觀測值會歸為正例,但這一小部分(一小撮)一定是最具有正例特征的觀測值集合(用上面資料庫營銷的例子來說,這一部分人群對郵寄問卷反應最為活躍),是以在這個depth下,對應的lift值最大。
同樣,當門檻值設定得足夠的小,那麼幾乎所有的觀測值都會被歸為正例(depth幾乎為1)——這時分類的效果就跟baseline model差不多了,相對應的lift值就接近于1。
一個好的分類模型,就是要偏離baseline model足夠遠。在lift圖中,表現就是,在depth為1之前,lift一直保持較高的(大于1的)數值,也即曲線足夠的陡峭。
Gains
Gains (增益) 與 Lift (提升)相當類似:Lift chart是不同門檻值下Lift和Depth的軌迹,Gains chart是不同門檻值下PV+和Depth的軌迹,而PV+=lift*pi1= d/b+d(見上),是以它們顯而易見的差別就在于縱軸刻度的不同:symbol i=join v=none c=black;
proc gplot data=valid_lift;
plot pv_plus*depth;
run; quit;
上圖門檻值的變化,含義與lift圖一樣。随着門檻值的減小,更多的客戶就會被歸為正例,也就是depth(預測成正例的比例,b+d/a+b+c+d)變大(b+d變大),這樣PV+(d/b+d,正确預測到的正例數占預測正例總數的比例)就相應減小。當門檻值設定得足夠的小,那麼幾乎所有的觀測值都會被歸為正例(depth幾乎為1),那麼PV+就等于資料中正例的比例pi1了(這裡是0.365。在Lift那一節裡,我們說此時分類的效果就跟baseline model差不多,相對應的lift值就接近于1,而PV+=lift*pi1。Lift的baseline model是縱軸上恒等于1的水準線,而Gains的baseline model是縱軸上恒等于pi1的水準線)。顯然,跟lift 圖類似,一個好的分類模型,在門檻值變大時,相應的PV+就要變大,曲線足夠陡峭。