<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【機(jī)器學(xué)習(xí)】金融風(fēng)控評(píng)分卡建模全流程!

          共 6467字,需瀏覽 13分鐘

           ·

          2021-03-14 11:12

          作者:桔了個(gè)仔,南洋理工大學(xué),數(shù)據(jù)科學(xué)家

          知乎丨h(huán)ttps://zhuanlan.zhihu.com/p/148102950

          本文摘要

          本文將帶領(lǐng)讀者一起進(jìn)行完整的建模全流程,了解銀行風(fēng)控是如何做的。并提供kaggle代碼。首先講述評(píng)分卡的分類(lèi)、優(yōu)缺點(diǎn)。接下來(lái),結(jié)合完整的可以馬上運(yùn)行的代碼,中間穿插理論,來(lái)講解評(píng)分卡的開(kāi)發(fā)流程。最后,把方法論再梳理一次,讓讀者在了解全流程后,在概念上理解再加深。

          本文還提供了完整的全流程代碼,讀者打開(kāi):https://www.kaggle.com/orange90/credit-scorecard-example,結(jié)合代碼來(lái)讀本文,會(huì)理解更深。

          一、評(píng)分卡的分類(lèi)

          在金融風(fēng)控領(lǐng)域,無(wú)人不曉的應(yīng)該是評(píng)分卡(scorecard), 無(wú)論信用卡還是貸款,都有”前中后“三個(gè)階段。根據(jù)風(fēng)控時(shí)間點(diǎn)的”前中后”,一般風(fēng)評(píng)分卡可以分為下面三類(lèi):

          • A卡(Application score card)。目的在于預(yù)測(cè)申請(qǐng)時(shí)(申請(qǐng)信用卡、申請(qǐng)貸款)對(duì)申請(qǐng)人進(jìn)行量化評(píng)估。
          • B卡(Behavior score card)。目的在于預(yù)測(cè)使用時(shí)點(diǎn)(獲得貸款、信用卡的使用期間)未來(lái)一定時(shí)間內(nèi)逾期的概率。
          • C卡(Collection score card)。目的在于預(yù)測(cè)已經(jīng)逾期并進(jìn)入催收階段后未來(lái)一定時(shí)間內(nèi)還款的概率。
          風(fēng)控評(píng)分卡種類(lèi)

          美國(guó)fico公司算是評(píng)分卡的始祖,始于 20世紀(jì)六十年代。Fico的評(píng)分卡的示例如下(這是個(gè)貸前評(píng)分卡,也就是A卡):

          可以看到,這里有三個(gè)因素,第一個(gè)是年齡AGE,第二個(gè)是收入段INCOME,第三個(gè)是住宅HOME是租的還是買(mǎi)的。當(dāng)總分超過(guò)600分,就給與授信額度。這種評(píng)分卡,操作簡(jiǎn)單,就算是個(gè)小學(xué)生都能算出風(fēng)險(xiǎn)值。

          二、評(píng)分卡優(yōu)缺點(diǎn)

          評(píng)分卡的好處還是很明顯的:

          • 易于使用。業(yè)務(wù)人員在操作時(shí),只需要按照評(píng)分卡每樣打分然后算個(gè)總分就能操作,不需要接受太多專(zhuān)業(yè)訓(xùn)練
          • 直觀透明。客戶和審核人員都能知道看到結(jié)果,以及結(jié)果是如何產(chǎn)生的。
          • 應(yīng)用范圍廣。我們最熟悉的,莫過(guò)于支付寶的芝麻信用分,又或者知乎鹽值(雖然知乎鹽值不是評(píng)估金融風(fēng)險(xiǎn)的,但也算是評(píng)分卡的應(yīng)用之一)

          但是,隨著信貸業(yè)務(wù)規(guī)模不斷擴(kuò)大,對(duì)風(fēng)控工作準(zhǔn)確率的要求也逐漸提升。這時(shí)候靜態(tài)評(píng)分卡的弱點(diǎn)就暴露了:

          • 利潤(rùn)的信息維度不高。簡(jiǎn)單是優(yōu)點(diǎn),但在日益增長(zhǎng)的數(shù)據(jù)前,就變成缺點(diǎn)。有著大量數(shù)據(jù)資源卻使用有限,造成數(shù)據(jù)資源的浪費(fèi)。
          • 當(dāng)信息維度高時(shí),評(píng)分卡建模會(huì)變得非常困難。(你看,本文的評(píng)分卡只涉及十個(gè)特征,就這么長(zhǎng)一篇了)
          • 某些不重要的特征,在另一些時(shí)刻會(huì)變得重要。例如在疫情期間,和收入相關(guān)的特征重要度會(huì)上升。

          當(dāng)然,以上的缺點(diǎn)主要限于靜態(tài)評(píng)分卡,就算拿紙打勾計(jì)算分?jǐn)?shù)那種,例如上面那個(gè)FICO的評(píng)分卡。有些積分,由于背后支撐的模型可以動(dòng)態(tài)調(diào)整相關(guān)參數(shù)的權(quán)重,這時(shí)候就生成一個(gè)動(dòng)態(tài)評(píng)分卡。但這種情況可以看成對(duì)機(jī)器學(xué)習(xí)模型做的可解釋性解析。

          三、評(píng)分卡構(gòu)建

          那么評(píng)分卡是如何構(gòu)建的呢?一般包含下面六個(gè)步驟

          1. 數(shù)據(jù)探究。研究數(shù)據(jù)都包含哪些信息。
          2. 樣本選取。選取一定時(shí)間周期內(nèi)該平臺(tái)上的信貸樣本數(shù)據(jù),劃分訓(xùn)練集和測(cè)試集。
          3. 變量選取。也就是特征篩選。需要一定的業(yè)務(wù)理解。一般這部分費(fèi)時(shí)較久
          4. 邏輯回歸。根據(jù)篩選后的特征,構(gòu)建邏輯回歸模型。
          5. 評(píng)分卡轉(zhuǎn)換。根據(jù)一定的公式轉(zhuǎn)換。
          6. 驗(yàn)證并上線。驗(yàn)證評(píng)分卡效果,并上線持續(xù)監(jiān)測(cè)
          評(píng)分卡建模步驟

          是不是看起來(lái)有點(diǎn)抽象呢?真正的干貨馬上來(lái),趕緊去上個(gè)廁所,沖好咖啡,因?yàn)橄旅娴母韶浱珴M了!

          四、評(píng)分卡構(gòu)建實(shí)戰(zhàn)演練

          看上面抽象的表述看累了?實(shí)際操作馬上來(lái)了。

          我們用的數(shù)據(jù)是每個(gè)搞風(fēng)控的人都熟悉的“Give Me Some Credit"數(shù)據(jù)集。本節(jié)會(huì)按照列出的六個(gè)步驟帶你領(lǐng)略評(píng)分卡實(shí)際構(gòu)建過(guò)程。

          數(shù)據(jù)集地址:https://link.zhihu.com/?target=https%3A//www.kaggle.com/c/GiveMeSomeCredit/overview

          最終示例代碼:https://link.zhihu.com/?target=https%3A//www.kaggle.com/orange90/credit-scorecard-example

          4.1 數(shù)據(jù)探究

          我們加載kaggle提供的數(shù)據(jù)集,先看看dataframe長(zhǎng)啥樣:

          太長(zhǎng)了,不容易看,我們看看摘要好了。

          可以看到有些column里面是有null value的。我們看看有多少null value:

          可以看到MonthlyIncome和NumberOfDependents有一些空值。在建模前我們需要對(duì)其進(jìn)行處理。

          對(duì)null值處理有很多策略,例如填中位數(shù),填平均數(shù),甚至拿個(gè)模型去預(yù)測(cè)都行。由于收入差距可能很大,MonthlyIncome填中位數(shù)相對(duì)合理。NumberOfDependents也可以填中位數(shù),或者平均數(shù),但平均數(shù)會(huì)變成小數(shù),所以還是取中位數(shù)。


          可以看到,fillna后就沒(méi)問(wèn)題了。

          其中,變量SeriousDlqin2yrs是我們模型的label。我們可以說(shuō)1為壞,0為好。這個(gè)變量是意思是Serious Delinquent in 2 year,也就是2年內(nèi)發(fā)生嚴(yán)重逾期,其中”嚴(yán)重“定義為逾期超過(guò)90天。也就是說(shuō)。例如你2018年1月1號(hào)開(kāi)卡,每個(gè)月1號(hào)是還款日。例如你2019年4月1號(hào)是你的還款日,然后你在7月1號(hào)前都沒(méi)還錢(qián),那這時(shí)候逾期就超過(guò)90天了,你的數(shù)據(jù)標(biāo)簽就為1。

          可以看到bad rate是0.06684。意味著我們?cè)诮G埃苍S需要對(duì)數(shù)據(jù)做一個(gè)平衡(balancing)。

          除此之外,其他列的定義如下(定義來(lái)自原數(shù)據(jù)集的Data Dictionary.xls)

          為了方便閱讀,關(guān)于其他變量我就不在本文一一探索了,感興趣的讀者可以到https://www.kaggle.com/orange90/credit-scorecard-example里慢慢看,這里有詳細(xì)的EDA。

          4.2 樣本選取

          對(duì)于金融機(jī)構(gòu)內(nèi)部,我們需要將連續(xù)的數(shù)據(jù)分為訓(xùn)練集和測(cè)試集。例如我目前有2017-01-01到2019-12-31的數(shù)據(jù),我可以把2017年1月,2月和2019年11月,12月作為測(cè)試集,2017-03-01到2019-10-31作為訓(xùn)練集。這么做的話,可以檢測(cè)模型跨時(shí)間的穩(wěn)健性。

          (藍(lán)色為訓(xùn)練集,紅色為測(cè)試集)

          上面僅為個(gè)人經(jīng)驗(yàn),不構(gòu)成本節(jié)實(shí)操的一部分。由于cs-test.csv并不包含標(biāo)簽,所以沒(méi)法拿來(lái)當(dāng)驗(yàn)證,我們從cs-training中將提取70%作為訓(xùn)練集,另外30%作為驗(yàn)證集。這個(gè)分割會(huì)在第四步——邏輯回歸前進(jìn)行。

          4.3 變量選取

          評(píng)分卡里叫變量,在建模時(shí),我們叫特征。但在評(píng)分卡里,我們需要對(duì)變量進(jìn)行分箱(binning),效果如圖二的fico評(píng)分卡。分箱怎么做的呢?

          我有空會(huì)做一個(gè)專(zhuān)題。這里先簡(jiǎn)單搞個(gè)分箱策略,值比較多的用pandas.qcut,值比較少的用pandas.cut。qcut和cut的區(qū)別是,qcut是根據(jù)這些值的頻率來(lái)選擇箱子的間隔,以實(shí)現(xiàn)盡量每個(gè)分箱里的樣本一樣多。而cut是手動(dòng)給定分箱閾值。

          我們定義需要 qcut的變量:

          • RevolvingUtilizationOfUnsecuredLines
          • DebtRatio
          • MonthlyIncome
          • NumberOfOpenCreditLinesAndLoans
          • NumberRealEstateLoansOrLines

          需要cut的變量,至于cut 的閾值,我就隨便給好了:

          • age
          • NumberOfDependents
          • NumberOfTime30-59DaysPastDueNotWorse
          • NumberOfTimes90DaysLate
          • NumberOfTime60-89DaysPastDueNotWorse

          qcut和cut的方法及閾值如下:

          在做特征篩選時(shí),我們?cè)趺磁袛嗄男┨卣饔杏茫男┨卣鳑](méi)啥用呢?特征篩選有多種方法,其中一種是,我們可以計(jì)算IV(Information Value)來(lái)判斷特征對(duì)結(jié)果的重要度。計(jì)算公式如下:

          其中WOE(Weight of Evidence) 定義為:

          我們寫(xiě)一個(gè)計(jì)算IV值的函數(shù):

          在業(yè)界實(shí)踐中,我們把IV<0.02的看作無(wú)效特征,0.02<0.1的為弱效果特征,>0.5為強(qiáng)特征,如下表所示。

          那我們只選擇IV值大于0.1的變量吧。計(jì)算每個(gè)變量的IV值:

          不同分箱會(huì)導(dǎo)致IV值不同,但本文是一個(gè)baseline模型,所以未對(duì)分箱策略做優(yōu)化。

          我們只選擇忽略week predictor和unless for prediction的特征,只選擇IV值0.1以上的,最后這五個(gè)入選

          'bin_RevolvingUtilizationOfUnsecuredLines'
          'bin_NumberOfTime30-59DaysPastDueNotWorse'
          'bin_age'
          'bin_NumberOfTimes90DaysLate'
          'bin_NumberOfTime60-89DaysPastDueNotWorse'

          4.4 邏輯回歸

          雖然用神經(jīng)網(wǎng)絡(luò)或者xgboost等模型效果更好,但多數(shù)情況下,銀行做評(píng)分卡時(shí)還是喜歡用邏輯回歸,因?yàn)椋?/p>

          1. 模型直觀,可解釋性強(qiáng),易于理解,變量系數(shù)可以與業(yè)內(nèi)知識(shí)做交叉驗(yàn)證,更容易讓人信服。
          2. 易于發(fā)現(xiàn)問(wèn)題。當(dāng)模型效果衰減的時(shí)候,logistic模型能更好的查找原因。

          我們定義一個(gè)函數(shù)cal_WOE,用以把分箱轉(zhuǎn)成WOE值。

          看起來(lái)數(shù)據(jù)應(yīng)該是可以用了。那現(xiàn)在我們開(kāi)始用邏輯回歸建模吧。

          由于數(shù)據(jù)集的測(cè)試樣本是沒(méi)有標(biāo)簽的,所以我們需要從訓(xùn)練集里分一些驗(yàn)證集出來(lái)。用train_test_split函數(shù)把數(shù)據(jù)分成70/30兩部分

          然后跑模型,模型訓(xùn)練非常快,一下子就完了。

          我們來(lái)看模型的AUC。業(yè)內(nèi)的經(jīng)驗(yàn)是,0.80以上就算是可以投入產(chǎn)品線使用的模型。

          模型的AUC達(dá)到還不錯(cuò)的0.82。由于這里使用數(shù)據(jù)集的sanity比較好,所以也容易出效果。這里插個(gè)題外話來(lái)講講我的工作經(jīng)驗(yàn)。根據(jù)我的開(kāi)發(fā)經(jīng)驗(yàn),在客戶真實(shí)數(shù)據(jù)上要取得這個(gè)AUC還是要花很長(zhǎng)時(shí)間的,尤其是數(shù)據(jù)清洗與特征提取就要花90%的時(shí)間。

          邏輯回歸模型這步很簡(jiǎn)單吧。下面就要講到評(píng)分卡轉(zhuǎn)換了,這一步標(biāo)志著你的模型要從實(shí)驗(yàn)室走向產(chǎn)品線了。

          4.5 評(píng)分卡轉(zhuǎn)換

          這一節(jié)的內(nèi)容是知乎很多文章都沒(méi)講清楚的,我首先先講理論,理論講完后,我就開(kāi)始結(jié)合案例來(lái)講。

          模型訓(xùn)練好后,我們需要把對(duì)每個(gè)變量的每個(gè)分箱(也就是數(shù)值段)轉(zhuǎn)換成具體的分值。在講計(jì)算過(guò)程前,先來(lái)講點(diǎn)前置知識(shí)。

          評(píng)分卡中不直接用客戶違約率p,而是用違約概率與正常概率的比值,稱為Odds,即

          評(píng)分卡會(huì)把odds映射成score。為啥不用p直接映射,而用odds?聽(tīng)我道來(lái)。

          根據(jù)邏輯回歸原理:

          把上述公式變化一下,有

          咦,是不是有點(diǎn)思路了?這不就是我們剛才提到的odds嗎?現(xiàn)在你懂了吧,因?yàn)橛?jì)算odds可以和邏輯回歸無(wú)縫結(jié)合。所以上面還可以變成

          $$ln(odds)=\theta^Tx  \tag{5 $$

          評(píng)分卡的背后邏輯是Odds的變動(dòng)與評(píng)分變動(dòng)的映射(把Odds映射為評(píng)分)。我們可以設(shè)計(jì)這個(gè)一個(gè)公式

          其中A與B是常數(shù),B前面取負(fù)號(hào)的原因,是讓違約概率越低,得分越高。因?yàn)閷?shí)際業(yè)務(wù)里,分?jǐn)?shù)也高風(fēng)險(xiǎn)越低,當(dāng)然你也可以設(shè)計(jì)個(gè)風(fēng)險(xiǎn)越低分?jǐn)?shù)越低的評(píng)分卡,但風(fēng)控里還是默認(rèn)高分高信用低風(fēng)險(xiǎn)。

          計(jì)算出A、B的方法如下,首先設(shè)定兩個(gè)假設(shè):

          1. 基準(zhǔn)分。基準(zhǔn)分  為某個(gè)比率時(shí)的得分  。業(yè)界某些風(fēng)控策略基準(zhǔn)分都設(shè)置為500/600/650。基準(zhǔn)分為 
          2. PDO(point of double),比率翻番時(shí)分?jǐn)?shù)的變動(dòng)值。假設(shè)我們?cè)O(shè)置為當(dāng)odds翻倍時(shí),分值減少30。

          設(shè)置好  后,就能算出A和B。怎么算?首先把  代入公式,有

          根據(jù)PDO的定義,我們有下面等式:

          上面兩個(gè)式子組成了我們小學(xué)就能解的二元一次方程組,把公式(7)的右邊替換掉公式(8)左邊,可以算出B,從而可以算得A的解。最后A、B的解分別為:,

          記住這兩個(gè)公式,等下實(shí)例開(kāi)始時(shí)就會(huì)用到。迫不及待想進(jìn)入實(shí)例訓(xùn)練了?稍安勿躁,還有最后一步,就是把分箱映射為分?jǐn)?shù)。

          還記得前面舉的評(píng)分卡例子嗎?評(píng)分卡里每一個(gè)變量的每一個(gè)分箱有一個(gè)對(duì)應(yīng)分值。前面的  是一個(gè)矩陣計(jì)算,展開(kāi)后我們有:

          其中變量  等等是出現(xiàn)在最終模型的入模變量。由于所有的入模變量都進(jìn)行了WOE編碼,可以將這些自變量中的每一個(gè)都寫(xiě)  的形式,其中  為第 i 個(gè)特征的第j 個(gè)分箱的WOE值, 是0,1邏輯變量,當(dāng)  時(shí),代表自特征i 取第 j 個(gè)分箱,當(dāng)  時(shí)代表特征i不取第j 個(gè)分箱。最終得到評(píng)分卡模型:

          公式有點(diǎn)抽象?換成圖片表示

          好了,評(píng)分卡轉(zhuǎn)換的理論講完了,現(xiàn)在要開(kāi)始令人振奮的實(shí)例了。

          我們定義 為1:1(你也可以試試其他值),基準(zhǔn)分為650,PDO為50,代入公式(9)和(10),有

          記住這兩個(gè)值,我會(huì)把這兩個(gè)值代入實(shí)例里計(jì)算。

          然后評(píng)分卡就輕輕松松得到了:

          可以看到,總體來(lái)說(shuō)評(píng)分符合預(yù)期,例如RevolvingUtilizationOfUnsecuredLines越高,給的分?jǐn)?shù)越低。

          不過(guò)也有的評(píng)分并不是完全符合預(yù)期,例如NumberOfTime60-89DaysPastDueNotWorse在(8.0, 9.0]段的分?jǐn)?shù)竟然是0,這完全沒(méi)道理啊!這個(gè)問(wèn)題的出現(xiàn),和訓(xùn)練集在這個(gè)分?jǐn)?shù)段的樣本量有關(guān),可能是這個(gè)段的數(shù)據(jù)太少了。解決方法是重新設(shè)計(jì)分箱策略,不過(guò)本文的目的是解釋整個(gè)流程,做個(gè)baseline,這里就不優(yōu)化了,讀者有興趣的話可以自己研究下如何優(yōu)化。

          五、驗(yàn)證并上線

          我們寫(xiě)個(gè)函數(shù)把原始特征的值轉(zhuǎn)換成評(píng)分卡里的值。函數(shù)名是calculate_score_with_card,也就是下圖里的最后一個(gè)函數(shù),其他三個(gè)函數(shù)是輔助函數(shù)。

          我們隨機(jī)選取五個(gè)好的樣本和五個(gè)壞的樣本,來(lái)驗(yàn)證下他們的效果。

          可以看到,好的樣本分?jǐn)?shù)評(píng)分都比壞樣本分?jǐn)?shù)低,說(shuō)明了評(píng)分卡的有效性。例如上面的例子,好的樣本分?jǐn)?shù)都是500以上,壞的樣本都在500以下。雖然換些樣本會(huì)發(fā)現(xiàn)未必完全準(zhǔn)確,但總體來(lái)說(shuō)能識(shí)別較多的壞客戶。

          最后上線后,我們要需要設(shè)計(jì)個(gè)策略,告訴審核員,哪些分?jǐn)?shù)的客戶直接拒絕,那些分?jǐn)?shù)的客戶可以直接接受,哪些分?jǐn)?shù)的客戶需要人工審核。策略大概如下表所示。(下圖的分值只是大概寫(xiě)些數(shù)字舉例,實(shí)際還需要計(jì)算得出最佳決策方案)

          至此,一個(gè)效果還不錯(cuò)的評(píng)分卡就產(chǎn)出了。

          總結(jié)

          本文首先講述了評(píng)分卡的分類(lèi)、優(yōu)缺點(diǎn)。接下來(lái),結(jié)合了完整的可以馬上運(yùn)行的代碼,中間穿插理論,講解了評(píng)分卡的開(kāi)發(fā)流程。完整的代碼在https://www.kaggle.com/orange90/credit-scorecard-example。

          最后,把方法論再梳理一次,加深大家理解,大家可以把下面這段復(fù)制到自己的筆記上,以后工作時(shí)隨時(shí)用到。

          0. 數(shù)據(jù)探究
          觀測(cè)有沒(méi)null值
          觀察數(shù)據(jù)分布
          1. 樣本選取
          可以用前后各取樣的方法來(lái)選擇驗(yàn)證集
          或者隨機(jī)抽樣30%作為驗(yàn)證集
          2. 變量選取
          分箱
          通過(guò)IV值選取有效特征
          把特征變成WOE表現(xiàn)形式
          3. 邏輯回歸
          觀測(cè)驗(yàn)證集的AUC
          4. 評(píng)分卡轉(zhuǎn)換
          根據(jù)邏輯回歸的公式轉(zhuǎn)換
          設(shè)置PDO,基準(zhǔn)分等
          5. 驗(yàn)證并上線
          驗(yàn)證結(jié)果
          設(shè)計(jì)策略

          往期精彩回顧





          本站qq群704220115,加入微信群請(qǐng)掃碼:


          瀏覽 89
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  高清日韩无码电影 | 苍井空久久久久 | 九九大香蕉视频 | 天天操夜夜摸 | 久久婷婷五月天综合 |