模型評估:ROC,AUC,KS,GINI,Lift,Gain, PSI 總結


版權聲明:本文為CSDN博主「曾先森~~」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zwqjoy/article/details/84859405

參考另一篇:[機器學習] 性能評估指標(精確率、召回率、ROC、AUC) 

背景介紹
在模型建立之后,必須對模型的效果進行評估,因為數據挖掘是一個探索的過程,評估-優化是一個永恆的過程。在分類模型評估中,最常用的兩種評估標准就是KS值和GINI, AUC值.可能有人會問了,為什么不直接看正確率呢?你可以這么想,如果一批樣本中,正樣本占到90%,負樣本只占10%,那么我即使模型什么也不做,把樣本全部判定為正,也能有90%的正確率咯?所以,用AUC值夠保證你在樣本不均衡的情況下也能准確評估模型的好壞,而KS值不僅能告訴你准確與否,還能告訴你模型對好壞客戶是否有足夠的區分度。

 

這里先整體給大家一個直觀的介紹。

概括:

Confusion Matrix -> Lift,Gain,ROC。

ROC -> AUC,KS -> GINI。

 

在介紹之前,我們先重新明確一下這些圖表的名稱,中文、英文、簡稱,全部來熟悉一下:

記住這個之后,我們來理解一下他們之間的關系。

擬人化概括

其實,這些圖之間的關系不是很復雜。我嘗試着用一個小故事概括一下人物之間的關系。

故事是這樣的:

首先,混淆矩陣是個元老,年齡最大也資歷最老。創建了兩個幫派,一個夫妻幫,一個階級幫。

之后,夫妻幫里面是夫妻兩個,一個Lift曲線,一個Gain曲線,兩個人不分高低,共用一個橫軸。

再次,階級幫里面就比較混亂。

           1. 幫主是ROC曲線。

           2. 副幫主是KS曲線,AUC面積

           3. AUC養了一個小弟,叫GINI系數

 

下圖是曲線與指標的綜合對比圖

一 ROC曲線和AUC值
在邏輯回歸、隨機森林、GBDT、XGBoost這些模型中,模型訓練完成之后,每個樣本都會獲得對應的兩個概率值,一個是樣本為正樣本的概率,一個是樣本為負樣本的概率。把每個樣本為正樣本的概率取出來,進行排序,然后選定一個閾值,將大於這個閾值的樣本判定為正樣本,小於閾值的樣本判定為負樣本,然后可以得到兩個值,一個是真正率,一個是假正率。

真正率即判定為正樣本且實際為正樣本的樣本數/所有的正樣本數,假正率為判定為正樣本實際為負樣本的樣本數/所有的負樣本數。每選定一個閾值,就能得到一對真正率和假正率,由於判定為正樣本的概率值區間為[0,1],那么閾值必然在這個區間內選擇,因此在此區間內不停地選擇不同的閾值,重復這個過程,就能得到一系列的真正率和假正率,以這兩個序列作為橫縱坐標,即可得到ROC曲線了。而ROC曲線下方的面積,即為AUC值。

對於AUC值,也許有一個更直觀的理解,那就是,在按照正樣本概率值對所有樣本排序后,任意選取一對正負樣本,正樣本排在負樣本之前的概率值,即為AUC值。也就是說,當所有的正樣本在排序后都能排在負樣本之前時,就證明所有的樣本都被正確分類了,此時的AUC值也會為1。那么AUC值也就很好算了,如果有N個負樣本,其中正樣本有M個,那么可取的所有帶正樣本的樣本對數對於排在第一位的正樣本來說,有M+N-1個,但其中包含M-1對(正,正)的樣本,而對於后面所有的正樣本而言,能夠取到的正樣本概率大於負樣本對數肯定小於其位置-1。


二 KS曲線
KS曲線其實數據來源和本質和ROC曲線是一致的,只是ROC曲線是把真正率和假正率當作橫縱軸,而K-S曲線是把真正率和假正率都當作是縱軸,橫軸則由選定的閾值來充當。

KS(Kolmogorov-Smirnov):KS用於模型風險區分能力進行評估,指標衡量的是好壞樣本累計分部之間的差值。好壞樣本累計差異越大,KS指標越大,那么模型的風險區分能力越強。

KS的計算步驟如下:
1. 計算每個評分區間的好壞賬戶數。
2. 計算每個評分區間的累計好賬戶數占總好賬戶數比率(good%)和累計壞賬戶數占總壞賬戶數比率(bad%)。
3. 計算每個評分區間累計壞賬戶占比與累計好賬戶占比差的絕對值(累計good%-累計bad%),然后對這些絕對值取最大值即得此評分卡的KS值。

 

下面這一段解釋得更詳細的KS和AUC的區別是參考的這篇博客:

https://blog.csdn.net/sinat_30316741/article/details/80018932

由於KS值能找出模型中差異最大的一個分段,因此適合用於cut_off,像評分卡這種就很適合用ks值來評估。但是ks值只能反映出哪個分段是區分最大的,而不能總體反映出所有分段的效果,因果AUC值更能勝任。
ROC值一般在0.5-1.0之間。值越大表示模型判斷准確性越高,即越接近1越好。ROC=0.5表示模型的預測能力與隨機結果沒有差別。
KS值表示了模型將+和-區分開來的能力。值越大,模型的預測准確性越好。一般,KS>0.2即可認為模型有比較好的預測准確性。
KS值一般是很難達到0.6的,在0.2~0.6之間都不錯。一般如果是如果負樣本對業務影響極大,那么區分度肯定就很重要,此時K-S比AUC更合適用作模型評估,如果沒什么特別的影響,那么用AUC就很好了。

區分度指標(KS)是度量具體模型下正常樣本和違約樣本分布的最大差距,首先按照樣本的信用分數或預測違約率從小到大進行排序,然后計算每一個分數或違約率下好壞樣本的累計占比。正常和違約樣本的累計占比差值的最大值即為區分度指標(KS)

 

風控分類模型種類(決策、排序)比較與模型評估體系(ROC/gini/KS/lift)
 

實際上是就是你建立好模型后,按照評分從大到小排列后:檢驗你所謂的好客戶和壞客戶兩類客戶分布的差異性,即模型區分度。分布根據好壞兩個客戶評分的累積密度分布曲線,畫出來的:比如好壞客戶共100個,按照評分排序后前百分之十的客戶即10個,其中好的客戶有8個,壞的客戶有2個(總體樣本中好客戶80個,壞客戶20個),那么前10%的客戶的累積密度為:好客戶10%,壞客戶10%。同理前20%的客戶中其中好的客戶有15個,壞的客戶有5個那么前20%的客戶的累積密度為:好客戶18.75%,壞客戶25%
以此類推可以得出前30%,40%。。。。100%的累積密度。以10%,20%,30%。。。100%為橫坐標,以兩類客戶累積密度為縱坐標,即可畫出KS曲線圖。

 

三 GINI系數

·GINI系數:也是用於模型風險區分能力進行評估。
GINI統計值衡量壞賬戶數在好賬戶數上的的累積分布與隨機分布曲線之間的面積,好賬戶與壞賬戶分布之間的差異越大,GINI指標越高,表明模型的風險區分能力越強。

GINI系數的計算步驟如下:
1. 計算每個評分區間的好壞賬戶數。
2. 計算每個評分區間的累計好賬戶數占總好賬戶數比率(累計good%)和累計壞賬戶數占總壞賬戶數比率(累計bad%)。
3. 按照累計好賬戶占比和累計壞賬戶占比得出下圖所示曲線ADC。
4. 計算出圖中陰影部分面積,陰影面積占直角三角形ABC面積的百分比,即為GINI系數。

 

四 Lift , Gain
前三個指標應用場景更多一些


Lift圖衡量的是,與不利用模型相比,模型的預測能力“變好”了多少,lift(提升指數)越大,模型的運行效果越好。
Gain圖是描述整體精准度的指標。
計算公式如下:
                                       
                                                       

                  
作圖步驟:
1. 根據學習器的預測結果(注意,是正例的概率值,非0/1變量)對樣本進行排序(從大到小)-----這就是截斷點依次選取的順序
2. 按順序選取截斷點,並計算Lift和Gain ---也可以只選取n個截斷點,分別在1/n,2/n,3/n等位置
例圖:

 

 

五 模型穩定度指標PSI
群體穩定性指標PSI(Population Stability Index)是衡量模型的預測值與實際值偏差大小的指標。

PSI = sum((實際占比-預期占比)* ln(實際占比/預期占比))

舉例:

比如訓練一個logistic回歸模型,預測時候會有個概率輸出p。
測試集上的輸出設定為p1吧,將它從小到大排序后10等分,如0-0.1,0.1-0.2,......。
現在用這個模型去對新的樣本進行預測,預測結果叫p2,按p1的區間也划分為10等分。
實際占比就是p2上在各區間的用戶占比,預期占比就是p1上各區間的用戶占比。
意義就是如果模型跟穩定,那么p1和p2上各區間的用戶應該是相近的,占比不會變動很大,也就是預測出來的概率不會差距很大。

一般認為PSI小於0.1時候模型穩定性很高,0.1-0.25一般,大於0.25模型穩定性差,建議重做。

PS:除了按概率值大小等距十等分外,還可以對概率排序后按數量十等分,兩種方法計算得到的psi可能有所區別但數值相差不大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM