1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【機(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)分卡的分類、優(yōu)缺點(diǎn)。接下來(lái),結(jié)合完整的可以馬上運(yùn)行的代碼,中間穿插理論,來(lái)講解評(píng)分卡的開發(fā)流程。最后,把方法論再梳理一次,讓讀者在了解全流程后,在概念上理解再加深。

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

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

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

        • 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)分卡種類

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

        可以看到,這里有三個(gè)因素,第一個(gè)是年齡AGE,第二個(gè)是收入段INCOME,第三個(gè)是住宅HOME是租的還是買的。當(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è)總分就能操作,不需要接受太多專業(yè)訓(xùn)練
        • 直觀透明??蛻艉蛯徍巳藛T都能知道看到結(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)開卡,每個(gè)月1號(hào)是還款日。例如你2019年4月1號(hào)是你的還款日,然后你在7月1號(hào)前都沒(méi)還錢,那這時(shí)候逾期就超過(guò)90天了,你的數(shù)據(jù)標(biāo)簽就為1。

        可以看到bad rate是0.06684。意味著我們?cè)诮G?,也許需要對(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è)專題。這里先簡(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) 定義為:

        我們寫一個(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)在我們開始用邏輯回歸建模吧。

        由于數(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ù)我的開發(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)講清楚的,我首先先講理論,理論講完后,我就開始結(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?聽我道來(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í)例開始時(shí)就會(huì)用到。迫不及待想進(jìn)入實(shí)例訓(xùn)練了?稍安勿躁,還有最后一步,就是把分箱映射為分?jǐn)?shù)。

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

        其中變量  等等是出現(xiàn)在最終模型的入模變量。由于所有的入模變量都進(jìn)行了WOE編碼,可以將這些自變量中的每一個(gè)都寫  的形式,其中  為第 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)在要開始令人振奮的實(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)證并上線

        我們寫個(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ù)的客戶需要人工審核。策略大概如下表所示。(下圖的分值只是大概寫些數(shù)字舉例,實(shí)際還需要計(jì)算得出最佳決策方案)

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

        總結(jié)

        本文首先講述了評(píng)分卡的分類、優(yōu)缺點(diǎn)。接下來(lái),結(jié)合了完整的可以馬上運(yùn)行的代碼,中間穿插理論,講解了評(píng)分卡的開發(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)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成人国产精品秘 欧美高清 | 无尽女同3d扶她g乳动漫 无遮挡美女 | 黑人与少妇啪啪 | 我与70岳肉体 | caobimaopian | 天天躁日日躁AAAAXXXXX18 | 日逼高潮视频 | 一级做a爰片性色毛片视频直播 | 妹子草网 | 成年人视频免费 |