1. 程式人生 > >評分卡模型剖析(woe、IV、ROC、資訊熵)

評分卡模型剖析(woe、IV、ROC、資訊熵)

摘要: 信用評分卡模型在國外是一種成熟的預測方法,尤其在信用風險評估以及金融風險控制領域更是得到了比較廣泛的使用,其原理是將模型變數WOE編碼方式離散化之後運用logistic迴歸模型進行的一種二分類變數的廣義線性模型。        本文重點介紹模型變數WOE以及IV原理,為表述方便,本文將模型目標標量為1記為違約使用者,對於目標變數為0記為正常使用者;則WOE(weight of E

信用評分卡模型在國外是一種成熟的預測方法,尤其在信用風險評估以及金融風險控制領域更是得到了比較廣泛的使用,其原理是將模型變數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表示對應每個取值的樣本數,n1n0分別表示了違約樣本數與正常樣本數,p1p0分別表示了違約樣本與正常樣本佔各自總體的比例,cump1cump0分別表示了p1p0的累計和,woe是對應自變數每個取值的WOEln(p1/p0)),ivwoe*(p1-p0)。對iv求和(可以看成是對WOE的加權求和),就得到IV(information value資訊值),是衡量自變數對目標變數影響的指標之一(類似於gini,entropy那些),此處是0.666,貌似有點太大了,囧。

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

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

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

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

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

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

   至此應該已經可以總結到:評價評分模型的效果可以從條件分佈函式距離條件密度函式距離這兩個角度出發進行考慮,從而分別得到AUCIV這兩個指標。這兩個指標當然也可以用來作為篩選自變數的指標,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的方差越大,則自變數的貢獻率越大(類似於某種方差貢獻率),這也能夠很直觀地理解。

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

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

轉載網址:https://yq.aliyun.com/articles/54529?do=login

!!!    有空對比下啞變數編碼與WOE編碼效果