午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

WOE:信用評(píng)分卡模型中的變量離散化方法

 生物_醫(yī)藥_科研 2019-01-24

在做回歸模型時(shí),因臨床需要常常需要對(duì)連續(xù)性的變量離散化,諸如年齡,分為老、中、青三組,一般的做法是ROC或者X-tile等等。今天介紹一種在信用卡評(píng)分系統(tǒng)中常用的連續(xù)變量離散化方法。目的是給大家在臨床數(shù)據(jù)分析中提供一種借鑒思路。

       最初接觸信用卡評(píng)分系統(tǒng)是在2013年SAS中國(guó)數(shù)據(jù)分析大賽總決賽上,題目是用歷史數(shù)據(jù)建立一個(gè)信用卡評(píng)分系統(tǒng),其中的變量離散化技術(shù)主要用到WOE(Weight of Evidence)翻譯過(guò)來(lái)叫證據(jù)權(quán)重。

       信用評(píng)分卡模型在國(guó)外是一種成熟的預(yù)測(cè)方法,尤其在信用風(fēng)險(xiǎn)評(píng)估以及金融風(fēng)險(xiǎn)控制領(lǐng)域更是得到了比較廣泛的使用,其原理是將模型變量WOE編碼方式離散化之后運(yùn)用logistic回歸模型進(jìn)行的一種二分類變量的廣義線性模型。

        本文重點(diǎn)介紹模型變量WOE以及IV原理,為表述方便,本文將模型目標(biāo)標(biāo)量為1記為違約用戶,對(duì)于目標(biāo)變量為0記為正常用戶;則WOE(weight of Evidence)其實(shí)就是自變量取某個(gè)值的時(shí)候?qū)`約比例的一種影響,怎么理解這句話呢?我下面通過(guò)一個(gè)圖標(biāo)來(lái)進(jìn)行說(shuō)明。

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

講完WOE下面來(lái)說(shuō)一下IV:

IV公式如下:


        其實(shí)IV衡量的是某一個(gè)變量的信息量,從公式來(lái)看的話,相當(dāng)于是自變量woe值的一個(gè)加權(quán)求和,其值的大小決定了自變量對(duì)于目標(biāo)變量的影響程度;從另一個(gè)角度來(lái)看的話,IV公式與信息熵的公式極其相似。

       事實(shí)上,為了理解WOE的意義,需要考慮對(duì)評(píng)分模型效果的評(píng)價(jià)。因?yàn)槲覀冊(cè)诮r(shí)對(duì)模型自變量的所有處理工作,本質(zhì)上都是為了提升模型的效果。在之前的一些學(xué)習(xí)中,我也總結(jié)了這種二分類模型效果的評(píng)價(jià)方法,尤其是其中的ROC曲線。為了描述WOE的意義,還真的需要從ROC說(shuō)起。

      仍舊是先畫個(gè)表格:


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

        上述過(guò)程研究了一個(gè)自變量對(duì)目標(biāo)變量的影響,事實(shí)上也可以看成是單個(gè)自變量的評(píng)分模型,更進(jìn)一步地,可以直接將自變量的取值當(dāng)做是某種信用評(píng)分的得分,此時(shí)需要假設(shè)自變量是某種有序變量,也就是僅僅根據(jù)這個(gè)有序的自變量直接對(duì)目標(biāo)變量進(jìn)行預(yù)測(cè)。

       正是基于這種視角,我們可以將“模型效果的評(píng)價(jià)”與“自變量篩選及編碼”這兩個(gè)過(guò)程統(tǒng)一起來(lái)。篩選合適的自變量,并進(jìn)行適當(dāng)?shù)木幋a,事實(shí)上就是挑選并構(gòu)造出對(duì)目標(biāo)變量有較高預(yù)測(cè)力(predictive power)的自變量,同時(shí)也可以認(rèn)為,由這些自變量分別建立的單變量評(píng)分模型,其模型效果也是比較好的。

       就以上面這個(gè)表格為例,其中的cump1和cump0,從某種角度看就是我們做ROC曲線時(shí)候的TPR與FPR。例如,此時(shí)的評(píng)分排序?yàn)锳12,A11,A14,A13,若以A14為cutoff,則此時(shí)的TPR=cumsum(p1)[3]/(sum(p1)),F(xiàn)PR=cumsum(p0)[3]/(sum(p0)),就是cump1[3]和cump0[3]。于是我們可以畫出相應(yīng)的ROC曲線。



         可以看得出來(lái)這個(gè)ROC不怎么好看。之前也學(xué)習(xí)過(guò)了,ROC曲線有可以量化的指標(biāo)AUC,指的就是曲線下方的面積。這種面積其實(shí)衡量了TPR與FPR之間的距離。根據(jù)上面的描述,從另一個(gè)角度看TPR與FPR,可以理解為這個(gè)自變量(也就是某種評(píng)分規(guī)則的得分)關(guān)于0/1目標(biāo)變量的條件分布,例如TPR,即cump1,也就是當(dāng)目標(biāo)變量取1時(shí),自變量(評(píng)分得分)的一個(gè)累積分布。當(dāng)這兩個(gè)條件分布距離較遠(yuǎn)時(shí),說(shuō)明這個(gè)自變量對(duì)目標(biāo)變量有較好的辨識(shí)度。  

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

       至此應(yīng)該已經(jīng)可以總結(jié)到:評(píng)價(jià)評(píng)分模型的效果可以從“條件分布函數(shù)距離”與“條件密度函數(shù)距離”這兩個(gè)角度出發(fā)進(jìn)行考慮,從而分別得到AUC和IV這兩個(gè)指標(biāo)。這兩個(gè)指標(biāo)當(dāng)然也可以用來(lái)作為篩選自變量的指標(biāo),IV似乎更加常用一些。而WOE就是IV的一個(gè)主要成分。 

       那么,到底為什么要用WOE來(lái)對(duì)自變量做編碼呢?主要的兩個(gè)考慮是:提升模型的預(yù)測(cè)效果,提高模型的可理解性。 

       首先,對(duì)已經(jīng)存在的一個(gè)評(píng)分規(guī)則,例如上述的A12,A11,A14,A13,對(duì)其做各種函數(shù)變化,可以得到不同的ROC結(jié)果。但是,如果這種函數(shù)變化是單調(diào)的,那么ROC曲線事實(shí)上是不發(fā)生變化的。因此,想要提高ROC,必須寄希望于對(duì)評(píng)分規(guī)則做非單調(diào)的變換。傳說(shuō)中的NP引理證明了,使得ROC達(dá)到最優(yōu)的變換就是計(jì)算現(xiàn)有評(píng)分的一個(gè)WOE,這似乎叫做“條件似然比”變換。

      用上述例子,我們根據(jù)計(jì)算出的WOE值,對(duì)評(píng)分規(guī)則(也就是第一列的value)做排序,得到新的一個(gè)評(píng)分規(guī)則。


   此處按照WOE做了逆序排列(因?yàn)閃OE越大則違約概率越大),照例可以畫出ROC線。


       可以看出來(lái),經(jīng)過(guò)WOE的變化之后,模型的效果好多了。事實(shí)上,WOE也可以用違約概率來(lái)代替,兩者沒(méi)有本質(zhì)的區(qū)別。用WOE來(lái)對(duì)自變量做編碼的一大目的就是實(shí)現(xiàn)這種“條件似然比”變換,極大化辨識(shí)度。 

       同時(shí),WOE與違約概率具有某種線性關(guān)系,從而通過(guò)這種WOE編碼可以發(fā)現(xiàn)自變量與目標(biāo)變量之間的非線性關(guān)系(例如U型或者倒U型關(guān)系)。在此基礎(chǔ)上,我們可以預(yù)料到模型擬合出來(lái)的自變量系數(shù)應(yīng)該都是正數(shù),如果結(jié)果中出現(xiàn)了負(fù)數(shù),應(yīng)當(dāng)考慮是否是來(lái)自自變量多重共線性的影響。

       另外,WOE編碼之后,自變量其實(shí)具備了某種標(biāo)準(zhǔn)化的性質(zhì),也就是說(shuō),自變量?jī)?nèi)部的各個(gè)取值之間都可以直接進(jìn)行比較(WOE之間的比較),而不同自變量之間的各種取值也可以通過(guò)WOE進(jìn)行直接的比較。進(jìn)一步地,可以研究自變量?jī)?nèi)部WOE值的變異(波動(dòng))情況,結(jié)合模型擬合出的系數(shù),構(gòu)造出各個(gè)自變量的貢獻(xiàn)率及相對(duì)重要性。一般地,系數(shù)越大,woe的方差越大,則自變量的貢獻(xiàn)率越大(類似于某種方差貢獻(xiàn)率),這也能夠很直觀地理解。 

      總結(jié)起來(lái)就是,做信用評(píng)分模型時(shí),自變量的處理過(guò)程(包括編碼與篩選)很大程度上是基于對(duì)單變量模型效果的評(píng)價(jià)。而在這個(gè)評(píng)價(jià)過(guò)程中,ROC與IV是從不同角度考察自變量對(duì)目標(biāo)變量的影響力,基于這種考察,我們用WOE值對(duì)分類自變量進(jìn)行編碼,從而能夠更直觀地理解自變量對(duì)目標(biāo)變量的作用效果及方向,同時(shí)提升預(yù)測(cè)效果。

參考文獻(xiàn):

  1. http://support./resources/papers/proceedings13/095-2013.pdf (內(nèi)有SAS程序);

  2. http:///blogs/information-value-and-weight-of-evidencebanking-case/


附SAS宏程序:

%macro WOEANDIV;

%do i=1 %to &varnum;/*循環(huán)計(jì)算每個(gè)變量的WOE和IV*/

data sasuser.woeiv;

set sasuser.woeiv;

if x&i=. then x&i=-1000000000;

run;

proc sql;

select sum(case when target=1 then 1 else 0 end), sum(case when target=0 then 1 else 0 end), count(*) into :tot_bad, :tot_good, :tot_both

from sasuser.woeiv;

quit;

proc sql;

select count(*) into :nonmiss

from sasuser.woeiv

where x&i ne -1000000000;

quit;

/*計(jì)算WOE*/

proc sql;

create table woe&i as

(select 'x&i' as variable,

x&i as tier,

count(*) as cnt,

count(*)/&tot_both as cnt_pct,

sum(case when target=0 then 1 else 0 end) as sum_good,

sum(case when target=0 then 1 else 0 end)/&tot_good as dist_good,

sum(case when target=1 then 1 else 0 end) as sum_bad,

sum(case when target=1 then 1 else 0 end)/&tot_bad as dist_bad,

log((sum(case when target=0 then 1 else 0 end)/&tot_good)/(sum(case when

target=1 then 1 else 0 end)/&tot_bad))*100 as woe,

((sum(case when target=0 then 1 else 0 end)/&tot_good)-(sum(case when

target=1 then 1 else 0 end)/&tot_bad))

*log((sum(case when target=0 then 1 else 0

end)/&tot_good)/(sum(case when target=1 then 1 else 0 end)/&tot_bad)) as pre_iv,

sum(case when target=1 then 1 else 0 end)/count(*) as outcome

from sasuser.woeiv

group by x&i

)

order by x&i;

quit;

/*計(jì)算IV*/

proc sql;

create table iv&i as select 'x&i' as variable,

sum(pre_iv) as iv,

(1-&nonmiss/&tot_both) as pct_missing

from woe&i; quit;

%end;

%mend;

%WOEANDIV;


/*合并IV結(jié)果*/

data iv;

length variable $5.;

set iv1-iv&varnum;

run;


/*根據(jù)IV值排序*/

proc sort data=iv out=iv;

by decending iv;

quit;


R語(yǔ)言程序詳見(jiàn)R論壇。




版權(quán)聲明:本公眾號(hào)的內(nèi)容部分來(lái)自互聯(lián)網(wǎng),轉(zhuǎn)載請(qǐng)注明原文鏈接和作者,如有侵權(quán)或出處有誤請(qǐng)聯(lián)系我們。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多