评分卡模型剖析之一(woe、IV、ROC、信息熵)
信用評分卡模型在國外是一種成熟的預測方法,尤其在信用風險評估以及金融風險控制領(lǐng)域更是得到了比較廣泛的使用,其原理是將模型變量WOE編碼方式離散化之后運用logistic回歸模型進行的一種二分類變量的廣義線性模型。
???????本文重點介紹模型變量WOE以及IV原理,為表述方便,本文將模型目標標量為1記為違約用戶,對于目標變量為0記為正常用戶;則WOE(weight of Evidence)其實就是自變量取某個值的時候?qū)`約比例的一種影響,怎么理解這句話呢?我下面通過一個圖標來進行說明。
Woe公式如下:
?
?
?
?
| 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年齡為某個自變量,由于年齡是連續(xù)型自變量,需要對其進行離散化處理,假設離散化分為5組(至于如何分組,會在以后專題中解釋),#bad和#good表示在這五組中違約用戶和正常用戶的數(shù)量分布,最后一列是woe值的計算,通過后面變化之后的公式可以看出,woe反映的是在自變量每個分組下違約用戶對正常用戶占比和總體中違約用戶對正常用戶占比之間的差異;從而可以直觀的認為woe蘊含了自變量取值對于目標變量(違約概率)的影響。再加上woe計算形式與logistic回歸中目標變量的logistic轉(zhuǎn)換(logist_p=ln(p/1-p))如此相似,因而可以將自變量woe值替代原先的自變量值;
講完WOE下面來說一下IV:
IV公式如下:
?
其實IV衡量的是某一個變量的信息量,從公式來看的話,相當于是自變量woe值的一個加權(quán)求和,其值的大小決定了自變量對于目標變量的影響程度;從另一個角度來看的話,IV公式與信息熵的公式極其相似。
事實上,為了理解WOE的意義,需要考慮對評分模型效果的評價。因為我們在建模時對模型自變量的所有處理工作,本質(zhì)上都是為了提升模型的效果。在之前的一些學習中,我也總結(jié)了這種二分類模型效果的評價方法,尤其是其中的ROC曲線。為了描述WOE的意義,還真的需要從ROC說起。仍舊是先畫個表格。
數(shù)據(jù)來自于著名的German credit dataset,取了其中一個自變量來說明問題。第一列是自變量的取值,N表示對應每個取值的樣本數(shù),n1和n0分別表示了違約樣本數(shù)與正常樣本數(shù),p1和p0分別表示了違約樣本與正常樣本占各自總體的比例,cump1和cump0分別表示了p1和p0的累計和,woe是對應自變量每個取值的WOE(ln(p1/p0)),iv是woe*(p1-p0)。對iv求和(可以看成是對WOE的加權(quán)求和),就得到IV(information value信息值),是衡量自變量對目標變量影響的指標之一(類似于gini,entropy那些),此處是0.666,貌似有點太大了,囧。
????上述過程研究了一個自變量對目標變量的影響,事實上也可以看成是單個自變量的評分模型,更進一步地,可以直接將自變量的取值當做是某種信用評分的得分,此時需要假設自變量是某種有序變量,也就是僅僅根據(jù)這個有序的自變量直接對目標變量進行預測。
正是基于這種視角,我們可以將“模型效果的評價”與“自變量篩選及編碼”這兩個過程統(tǒng)一起來。篩選合適的自變量,并進行適當?shù)木幋a,事實上就是挑選并構(gòu)造出對目標變量有較高預測力(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曲線。
????可以看得出來這個ROC不怎么好看。之前也學習過了,ROC曲線有可以量化的指標AUC,指的就是曲線下方的面積。這種面積其實衡量了TPR與FPR之間的距離。根據(jù)上面的描述,從另一個角度看TPR與FPR,可以理解為這個自變量(也就是某種評分規(guī)則的得分)關(guān)于0/1目標變量的條件分布,例如TPR,即cump1,也就是當目標變量取1時,自變量(評分得分)的一個累積分布。當這兩個條件分布距離較遠時,說明這個自變量對目標變量有較好的辨識度。??
????既然條件分布函數(shù)能夠描述這種辨識能力,那么條件密度函數(shù)行不行呢?這就引出了IV和WOE的概念。事實上,我們同樣可以衡量兩個條件密度函數(shù)的距離,這就是IV。這從IV的計算公式里面可以看出來,IV=sum((p1-p0)*log(p1/p0)),其中的p1和p0就是相應的密度值。IV這個定義是從相對熵演化過來的,里面仍然可以看到x*lnx的影子。
???至此應該已經(jīng)可以總結(jié)到:評價評分模型的效果可以從“條件分布函數(shù)距離”與“條件密度函數(shù)距離”這兩個角度出發(fā)進行考慮,從而分別得到AUC和IV這兩個指標。這兩個指標當然也可以用來作為篩選自變量的指標,IV似乎更加常用一些。而WOE就是IV的一個主要成分。?
????那么,到底為什么要用WOE來對自變量做編碼呢?主要的兩個考慮是:提升模型的預測效果,提高模型的可理解性。?
????首先,對已經(jīng)存在的一個評分規(guī)則,例如上述的A12,A11,A14,A13,對其做各種函數(shù)變化,可以得到不同的ROC結(jié)果。但是,如果這種函數(shù)變化是單調(diào)的,那么ROC曲線事實上是不發(fā)生變化的。因此,想要提高ROC,必須寄希望于對評分規(guī)則做非單調(diào)的變換。傳說中的NP引理證明了,使得ROC達到最優(yōu)的變換就是計算現(xiàn)有評分的一個WOE,這似乎叫做“條件似然比”變換。
用上述例子,我們根據(jù)計算出的WOE值,對評分規(guī)則(也就是第一列的value)做排序,得到新的一個評分規(guī)則。
???此處按照WOE做了逆序排列(因為WOE越大則違約概率越大),照例可以畫出ROC線。
?
????可以看出來,經(jīng)過WOE的變化之后,模型的效果好多了。事實上,WOE也可以用違約概率來代替,兩者沒有本質(zhì)的區(qū)別。用WOE來對自變量做編碼的一大目的就是實現(xiàn)這種“條件似然比”變換,極大化辨識度。?
????同時,WOE與違約概率具有某種線性關(guān)系,從而通過這種WOE編碼可以發(fā)現(xiàn)自變量與目標變量之間的非線性關(guān)系(例如U型或者倒U型關(guān)系)。在此基礎上,我們可以預料到模型擬合出來的自變量系數(shù)應該都是正數(shù),如果結(jié)果中出現(xiàn)了負數(shù),應當考慮是否是來自自變量多重共線性的影響。
????另外,WOE編碼之后,自變量其實具備了某種標準化的性質(zhì),也就是說,自變量內(nèi)部的各個取值之間都可以直接進行比較(WOE之間的比較),而不同自變量之間的各種取值也可以通過WOE進行直接的比較。進一步地,可以研究自變量內(nèi)部WOE值的變異(波動)情況,結(jié)合模型擬合出的系數(shù),構(gòu)造出各個自變量的貢獻率及相對重要性。一般地,系數(shù)越大,woe的方差越大,則自變量的貢獻率越大(類似于某種方差貢獻率),這也能夠很直觀地理解。?
總結(jié)起來就是,做信用評分模型時,自變量的處理過程(包括編碼與篩選)很大程度上是基于對單變量模型效果的評價。而在這個評價過程中,ROC與IV是從不同角度考察自變量對目標變量的影響力,基于這種考察,我們用WOE值對分類自變量進行編碼,從而能夠更直觀地理解自變量對目標變量的作用效果及方向,同時提升預測效果。
這么一總結(jié),似乎信用評分的建模過程更多地是分析的過程(而不是模型擬合的過程),也正因此,我們對模型參數(shù)的估計等等內(nèi)容似乎并不做太多的學習,而把主要的精力集中于研究各個自變量與目標變量的關(guān)系,在此基礎上對自變量做篩選和編碼,最終再次評估模型的預測效果,并且對模型的各個自變量的效用作出相應的評價。
總結(jié)
以上是生活随笔為你收集整理的评分卡模型剖析之一(woe、IV、ROC、信息熵)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模型验证的常用“武器”—ROC和AUC
- 下一篇: 用R做评分卡模型