評分卡模型剖析之一(woe、IV、ROC、信息熵)


信用評分卡模型在國外是一種成熟的預測方法,尤其在信用風險評估以及金融風險控制領域更是得到了比較廣泛的使用,其原理是將模型變量WOE編碼方式離散化之后運用logistic回歸模型進行的一種二分類變量的廣義線性模型。

       本文重點介紹模型變量WOE以及IV原理,為表述方便,本文將模型目標標量為1記為違約用戶,對於目標變量為0記為正常用戶;

WOE(weight of Evidence 證據權重)其實就是自變量取某個值的時候對違約比例的一種影響

怎么理解這句話呢?我下面通過一個圖標來進行說明。

Woe公式如下:

評分卡模型剖析之一(woe、IV、ROC、信息熵)

Age

#bad

#good

Woe

0-10

50

200

=ln((50/100)/(200/1000))=ln((50/200)/(100/1000))

10-18

20

200

=ln((20/100)/(200/1000))=ln((20/200)/(100/1000))

18-35

5

200

=ln((5/100)/(200/1000))=ln((5/200)/(100/1000))

35-50

15

200

=ln((15/100)/(200/1000))=ln((15/200)/(100/1000))

50以上

10

200

=ln((10/100)/(200/1000))=ln((10/200)/(100/1000))

匯總

100

1000

 

    表中以age年齡為某個自變量,由於年齡是連續型自變量,需要對其進行離散化處理,假設離散化分為5組(至於如何分組,會在以后專題中解釋),#bad和#good表示在這五組中違約用戶和正常用戶的數量分布,最后一列是woe值的計算,通過后面變化之后的公式可以看出,woe反映的是在自變量每個分組下違約用戶對正常用戶占比和總體違約用戶對正常用戶占比之間的差異;從而可以直觀的認為woe蘊含了自變量取值對於目標變量(違約概率)的影響。再加上woe計算形式與logistic回歸中目標變量的logistic轉換(logist_p=ln(p/1-p))如此相似,因而可以將自變量woe值替代原先的自變量值;

講完WOE下面來說一下IV:

IV公式如下:

評分卡模型剖析之一(woe、IV、ROC、信息熵)

其實IV衡量的是某一個變量的信息量,從公式來看的話,相當於是自變量woe值的一個加權求和,其值的大小決定了自變量對於目標變量的影響程度;從另一個角度來看的話,IV公式與信息熵的公式極其相似。

事實上,為了理解WOE的意義,需要考慮對評分模型效果的評價。因為我們在建模時對模型自變量的所有處理工作,本質上都是為了提升模型的效果。在之前的一些學習中,我也總結了這種二分類模型效果的評價方法,尤其是其中的ROC曲線。為了描述WOE的意義,還真的需要從ROC說起。仍舊是先畫個表格。

評分卡模型剖析之一(woe、IV、ROC、信息熵)

數據來自於著名的German credit dataset,取了其中一個自變量來說明問題。第一列是自變量的取值,N表示對應每個取值的樣本數,n1和n0分別表示了違約樣本數與正常樣本數,p1和p0分別表示了違約樣本與正常樣本占各自總體的比例,cump1和cump0分別表示了p1和p0的累計和,woe是對應自變量每個取值的WOE(ln(p1/p0)),iv是woe*(p1-p0)。對iv求和(可以看成是對WOE的加權求和),就得到IV(information value信息值),是衡量自變量對目標變量影響的指標之一(類似於gini,entropy那些),此處是0.666,貌似有點太大了,囧。

 

IV可以稍后再講,首先需要有一個認識:上述過程研究了一個自變量對目標變量的影響,事實上也可以看成是單個自變量的評分模型,更進一步地,可以直接將自變量的取值當做是某種信用評分的得分,此時需要假設自變量是某種有序變量,也就是僅僅根據這個有序的自變量直接對目標變量進行預測

 

正是基於這種視角,我們可以將“模型效果的評價”與“自變量篩選及編碼”這兩個過程統一起來。篩選合適的自變量,並進行適當的編碼,事實上就是挑選並構造出對目標變量有較高預測力(predictive power)的自變量,同時也可以認為,由這些自變量分別建立的單變量評分模型,其模型效果也是比較好的。

 

    上述過程研究了一個自變量對目標變量的影響,事實上也可以看成是單個自變量的評分模型,更進一步地,可以直接將自變量的取值當做是某種信用評分的得分,此時需要假設自變量是某種有序變量,也就是僅僅根據這個有序的自變量直接對目標變量進行預測。

正是基於這種視角,我們可以將“模型效果的評價”與“自變量篩選及編碼”這兩個過程統一起來。篩選合適的自變量,並進行適當的編碼,事實上就是挑選並構造出對目標變量有較高預測力(predictive power)的自變量,同時也可以認為,由這些自變量分別建立的單變量評分模型,其模型效果也是比較好的。

就以上面這個表格為例,其中的cump1和cump0,從某種角度看就是我們做ROC曲線時候的TPR與FPR。例如,此時的評分排序為A12,A11,A14,A13,若以A14為cutoff,則此時的TPR=cumsum(p1)[3]/(sum(p1)),FPR=cumsum(p0)[3]/(sum(p0)),就是cump1[3]和cump0[3]。於是我們可以畫出相應的ROC曲線。

評分卡模型剖析之一(woe、IV、ROC、信息熵)

    可以看得出來這個ROC不怎么好看。之前也學習過了,ROC曲線有可以量化的指標AUC,指的就是曲線下方的面積。這種面積其實衡量了TPR與FPR之間的距離。根據上面的描述,從另一個角度看TPR與FPR,可以理解為這個自變量(也就是某種評分規則的得分)關於0/1目標變量的條件分布,例如TPR,即cump1,也就是當目標變量取1時,自變量(評分得分)的一個累積分布。當這兩個條件分布距離較遠時,說明這個自變量對目標變量有較好的辨識度。  

    既然條件分布函數能夠描述這種辨識能力,那么條件密度函數行不行呢?這就引出了IV和WOE的概念。事實上,我們同樣可以衡量兩個條件密度函數的距離,這就是IV。這從IV的計算公式里面可以看出來,IV=sum((p1-p0)*log(p1/p0)),其中的p1和p0就是相應的密度值。IV這個定義是從相對熵演化過來的,里面仍然可以看到x*lnx的影子。

   至此應該已經可以總結到:評價評分模型的效果可以從“條件分布函數距離”與“條件密度函數距離”這兩個角度出發進行考慮,從而分別得到AUC和IV這兩個指標。這兩個指標當然也可以用來作為篩選自變量的指標,IV似乎更加常用一些。而WOE就是IV的一個主要成分。 

    那么,到底為什么要用WOE來對自變量做編碼呢?主要的兩個考慮是:提升模型的預測效果,提高模型的可理解性 

    首先,對已經存在的一個評分規則,例如上述的A12,A11,A14,A13,對其做各種函數變化,可以得到不同的ROC結果。但是,如果這種函數變化是單調的,那么ROC曲線事實上是不發生變化的。因此,想要提高ROC,必須寄希望於對評分規則做非單調的變換。傳說中的NP引理證明了,使得ROC達到最優的變換就是計算現有評分的一個WOE,這似乎叫做“條件似然比”變換。

用上述例子,我們根據計算出的WOE值,對評分規則(也就是第一列的value)做排序,得到新的一個評分規則。

評分卡模型剖析之一(woe、IV、ROC、信息熵)
   此處按照WOE做了逆序排列(因為WOE越大則違約概率越大),照例可以畫出ROC線。

評分卡模型剖析之一(woe、IV、ROC、信息熵)

    可以看出來,經過WOE的變化之后,模型的效果好多了。事實上,WOE也可以用違約概率來代替,兩者沒有本質的區別。用WOE來對自變量做編碼的一大目的就是實現這種“條件似然比”變換,極大化辨識度。 

    同時,WOE與違約概率具有某種線性關系,從而通過這種WOE編碼可以發現自變量與目標變量之間的非線性關系(例如U型或者倒U型關系)。在此基礎上,我們可以預料到模型擬合出來的自變量系數應該都是正數,如果結果中出現了負數,應當考慮是否是來自自變量多重共線性的影響。

    另外,WOE編碼之后,自變量其實具備了某種標准化的性質,也就是說,自變量內部的各個取值之間都可以直接進行比較(WOE之間的比較),而不同自變量之間的各種取值也可以通過WOE進行直接的比較。進一步地,可以研究自變量內部WOE值的變異(波動)情況,結合模型擬合出的系數,構造出各個自變量的貢獻率及相對重要性。一般地,系數越大,woe的方差越大,則自變量的貢獻率越大(類似於某種方差貢獻率),這也能夠很直觀地理解。 

總結起來就是,做信用評分模型時,自變量的處理過程(包括編碼與篩選)很大程度上是基於對單變量模型效果的評價。而在這個評價過程中,ROC與IV是從不同角度考察自變量對目標變量的影響力,基於這種考察,我們用WOE值對分類自變量進行編碼,從而能夠更直觀地理解自變量對目標變量的作用效果及方向,同時提升預測效果。

這么一總結,似乎信用評分的建模過程更多地是分析的過程(而不是模型擬合的過程),也正因此,我們對模型參數的估計等等內容似乎並不做太多的學習,而把主要的精力集中於研究各個自變量與目標變量的關系在此基礎上對自變量做篩選和編碼,最終再次評估模型的預測效果,並且對模型的各個自變量的效用作出相應的評價。

 轉自:http://blog.sina.com.cn/s/blog_8813a3ae0102uyo3.html

 

R語言實現WOE轉化+變量細篩

 

R語言中有一個woe包,可以實現WOE轉化的同時,通過WOE值進行y~x的決策樹建立,應用決策樹的重要性來進行變量細篩。

library(woe)          
IV<-iv.mult(step2_2,"y",TRUE) #原理是以Y作為被解釋變量,其他作為解釋變量,建立決策樹模型
iv.plot.summary(IV)

summary(step2_3)

不能只看統計量,還要仔細的察看每個變量的取值情況。一般WOE建模數據是經過抽樣的,因此可能需要多建模幾次,看看不同的變量特征變化,再來進行變量細篩。

 

 

 


免責聲明!

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



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