這個(gè)案例展示如何運(yùn)用 MATLAB 中自帶的 Binning Explorer 小程序來(lái)創(chuàng)建信用評(píng)級(jí)中的評(píng)分卡。用 Binning Explorer 對(duì)樣本進(jìn)行分箱操作, 創(chuàng)建圖表來(lái)展示分箱信息,并將創(chuàng)建的對(duì)象”creditscorecard”導(dǎo)出。然后利用 creditscorecard 對(duì)象,結(jié)合 Financial Toolbox 中的函數(shù)來(lái)對(duì)邏輯回歸模型進(jìn)行擬合, 為樣本進(jìn)行評(píng)分并計(jì)算違約概率(PD),然后用三個(gè)不同的指標(biāo)對(duì)評(píng)分卡模型進(jìn)行驗(yàn)證。
步驟1 將樣本數(shù)據(jù)導(dǎo)入到 MATLAB 的工作區(qū)
步驟2 將數(shù)據(jù)導(dǎo)入到 Binning Explorer 小程序
步驟3 在 Binning Explorer 中對(duì)分箱做進(jìn)一步調(diào)整
步驟4 在 Binning Explorer 中將 creditscorecard 對(duì)象導(dǎo)出
步驟5 對(duì)邏輯回歸模型進(jìn)行擬合
步驟6 檢查并調(diào)整評(píng)分卡分?jǐn)?shù)的比例
步驟7 對(duì)樣本進(jìn)行評(píng)分
步驟8 計(jì)算違約概率 PD
步驟9 用 CAP,ROC,KS 檢驗(yàn)來(lái)對(duì)信用評(píng)分卡模型進(jìn)行驗(yàn)證
◆ ◆ ◆ ◆
步驟1. 將樣本數(shù)據(jù)導(dǎo)入到 MATLAB 的工作區(qū)將保存在 CreditCardData.mat 中的數(shù)據(jù)導(dǎo)入 MATLAB 工作區(qū) (使用 Refaat 2011 的數(shù)據(jù))。 運(yùn)行代碼如下:
load CreditCardData
disp(data(1:10,:))
步驟2. 將數(shù)據(jù)導(dǎo)入到 Binning Explorer 小程序方法一, 從 MATLAB 工具欄中打開(kāi) Binning Explorer : 在 Apps 菜單下, 找到計(jì)算金融學(xué)(Computational Finance), 點(diǎn)擊 Binning Explorer 的圖標(biāo)。 方法二, 在 MATLAB 中運(yùn)行如下命令行 。 binningExplorer(更多關(guān)于啟動(dòng) Binning Explorer 小程序的信息, 參見(jiàn) Start from MATLAB Command Line Using Data or an Existing creditscorecard Object.) (鏈接如下)https://ww2.mathworks.cn/help/risk/common-binning-explorer-tasks.html#startbinningexplorercommandline在 Binning Explorer 的工具欄,點(diǎn)擊 Import Data 按鈕來(lái)打開(kāi)導(dǎo)入數(shù)據(jù)的窗口。
在 Step 1(第一步)下, 選擇 data 為需要導(dǎo)入的數(shù)據(jù)在 Step 2(第二步)下, 可在 Variable Type 下為每個(gè)變量指定其類型。 缺省設(shè)置下,數(shù)據(jù)的最后一列(本例中為’status’)為‘Response’, 也就是因變量。因變量的值最好的樣本(本例中為“0“)被標(biāo)記為‘Good’。 所有其它的變量被歸為因變量。此外, 在這個(gè)例子中,‘CustID’(客戶的編號(hào))不是一個(gè)包含信息的因變量, 因此把 Variable Type 下面的‘CustID’ 對(duì)應(yīng)設(shè)為 Do not include注意
如果導(dǎo)入的數(shù)據(jù)中有一列是各個(gè)因變量的權(quán)重,那么在 Step 2 的下面, 對(duì)應(yīng)的 Variable Type , 應(yīng)在下拉菜單中選中 Weights.
如果原始數(shù)據(jù)中有部分?jǐn)?shù)據(jù)缺失,那么在 Step 2 , 將 Bin missing data 設(shè)置為 Yes.
l在 Step 3, 選擇 Monotone 作為缺省的初始化的分箱算法。點(diǎn)擊 Import Data 完成這一導(dǎo)入數(shù)據(jù)的步驟。在數(shù)據(jù)導(dǎo)入的過(guò)程中,Binning Explorer 采用我們之前選中的算法自動(dòng)的對(duì)應(yīng)每個(gè)自變量對(duì)樣本進(jìn)行分箱。每個(gè)自變量對(duì)應(yīng)的樣本分箱的結(jié)果都單獨(dú)以柱狀圖的形式顯示如下。點(diǎn)擊其中一個(gè)因變量,對(duì)應(yīng)的分箱結(jié)果的詳細(xì)信息就會(huì)在左下角的 Bin Information 以及右下角的 Predictor Information 這兩個(gè)面板中顯示出來(lái)。Binning Explorer 對(duì)應(yīng)每個(gè)自變量,都對(duì)樣本自動(dòng)進(jìn)行分箱。采用的缺省算法是“Monotone”。
該算法是針對(duì)信用評(píng)分卡最理想的算法,因?yàn)橥ㄟ^(guò)該算法得出的樣本數(shù)據(jù)的分箱結(jié)果,對(duì)應(yīng)每個(gè)分箱的 WOE(Weight of Evidence)都是盡可能(完全或近似的)呈單調(diào)線性的趨勢(shì)(線性遞增或遞減)。
在本例中各個(gè)自變量的分箱圖中可以看到 WOE 這一單調(diào)性的趨勢(shì)。我們來(lái)看一下如何對(duì)數(shù)據(jù)進(jìn)行一些初步的分析。以‘ResStatus’(居住狀況)這個(gè)類別型變量(categorical variable)為例。點(diǎn)擊 ResStatus 的分箱圖。 在 Bin Information 面板中包含了不同分箱(分組)的好樣本和壞樣本的數(shù)量和其他的分箱信息如 WOE。以“Tenant”這一分箱(樣本人的居住狀況為“租房”)為例:在租房居住的樣本中,307 個(gè)為好樣本(沒(méi)有發(fā)生過(guò)違約),167 個(gè)壞樣本(有違約記錄)好樣本與壞樣本之比(Odds)為1.8383。對(duì)于數(shù)值型的變量, 以 CustIncome 為例,點(diǎn)擊 CustIncome 的分箱圖。則 Bin Information 的面板中的數(shù)據(jù)更新為 CustIncome 的分箱信息。
步驟3. 對(duì)分箱結(jié)果進(jìn)行手動(dòng)調(diào)整以 CustAge (客戶年齡) 為例,點(diǎn)擊 CustAge 這個(gè)變量的分箱圖。注意第一組和第二組分箱(年齡為 33 歲以下,以及 33 到 37 歲)的 WOE 非常接近,第五組和第六組分箱也是類似情況。 我們認(rèn)為這兩對(duì)相鄰的分組并沒(méi)有把樣本更好的區(qū)分開(kāi)來(lái),也就是說(shuō),這樣的分組并沒(méi)有給接下來(lái)的打分操作(以便區(qū)分好樣本和壞樣本)帶來(lái)可以明顯區(qū)分的信息。因此可以將這兩對(duì)分組分別合并。
要合并第一組和第二組分箱,我們進(jìn)行如下操作:在 Binning Explorer 菜單下, 點(diǎn)擊 Manual Binning 可將當(dāng)前選中的變量 CustAge 在一個(gè)新的窗口下打開(kāi)(Manual Binning: CustAge)。 您也可以直接用鼠標(biāo)雙擊對(duì)應(yīng)變量的圖來(lái)打開(kāi) Manual Binning 窗口。 用 Ctrl + 鼠標(biāo)點(diǎn)擊來(lái)同時(shí)選中要合并的分箱 1 和 2,此時(shí)兩個(gè)分箱的柱狀圖會(huì)被藍(lán)色邊框圈起來(lái)。
在 Manual Binning 菜單下, Edges 右邊的兩個(gè)文本框顯示的是將要合并的兩個(gè)分箱所涵蓋的變量的取值的范圍,本例是從 0 到 37 歲(不含37歲)。
點(diǎn)擊 Merge 將前兩個(gè)分箱合并。此時(shí)在 Overview 窗口下面的 CustAge 的圖已經(jīng)更新為了合并后的新的分箱的圖例,同時(shí)在 Bin Information 和 Predictor Information 面板下的數(shù)據(jù)也會(huì)相應(yīng)更新。
接下來(lái),合并初始的第 4 和第 5 分箱(上面合并步驟后的第 3 和第 4 分箱,即 46~48 歲組和 48 到 58 歲組), 因?yàn)檫@兩組的 WOE 也非常接近。
變量 CustAge 的分箱圖在前面兩個(gè)合并操作后已經(jīng)更新為了新的信息。Bin Information 和 Predictor Information 這兩個(gè)面板的信息也同樣更新了。(注: Predictor Information 在合并操作后沒(méi)有變化,是因?yàn)檫@兩次操作并沒(méi)有改變具體的樣本,因此沒(méi)有影響到該面板下的四個(gè)數(shù)據(jù)統(tǒng)計(jì)的信息)對(duì)下面這些有接近的 WOE 的分箱進(jìn)行類似的合并操作:
變量 CustIncome (客戶的收入情況), 合并分箱 3、4 和5.
變量 TmWBank (在該銀行的開(kāi)戶時(shí)長(zhǎng)), 合并分箱 2 和 3.
變量 AMBalance, (賬戶平均每月盈余),合并分箱 2 和 3.
現(xiàn)在所有變量的分箱顯示的 WOE 都為近似線性單調(diào)(遞增或遞減)的趨勢(shì)。步驟4. 將 creditscorecard 對(duì)象從 Binning Explorer 導(dǎo)出到工作區(qū)在完成所有分箱的操作之后,在 Binning Explorer 菜單下,點(diǎn)擊 Export Scorecard 然后給 creditscorecard 這個(gè)對(duì)象命名。 本例中將該對(duì)象命名為“sc”保存到工作區(qū) 。步驟5. 進(jìn)行邏輯回歸擬合通過(guò) fitmodel 函數(shù)來(lái)對(duì)WOE數(shù)據(jù)進(jìn)行邏輯回歸的擬合。 (鏈接如下)https://ww2.mathworks.cn/help/finance/creditscorecard.fitmodel.htmlfitmodel 會(huì)對(duì)訓(xùn)練集的數(shù)據(jù)樣本進(jìn)行分箱,將其轉(zhuǎn)化成相應(yīng)的 WOE 的值,并與相應(yīng)因變量的值進(jìn)行映射,(即好樣本對(duì)應(yīng)的因變量值為1)然后做線性的邏輯回歸模型的擬合。缺省設(shè)置下,fitmodel 逐一將變量進(jìn)行測(cè)試來(lái)決定是否將其納入模型中作為自變量。 代碼運(yùn)行結(jié)果如下:
sc = fitmodel(sc);
1200 observations, 1192 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 89.7, p-value = 1.42e-16
步驟6. 檢查并調(diào)整評(píng)分卡的分?jǐn)?shù)
在進(jìn)行模型擬合之后,各個(gè)變量的分箱對(duì)應(yīng)評(píng)分卡的分?jǐn)?shù)尚未按照比例進(jìn)行調(diào)整,是直接以WOE 值和模型變量的系數(shù)的乘積得來(lái)的分?jǐn)?shù)。用 displaypoints 函數(shù)可以看到評(píng)分卡上所有的分箱和對(duì)分?jǐn)?shù)。 (鏈接如下)https://ww2.mathworks.cn/help/finance/creditscorecard.displaypoints.html代碼運(yùn)行結(jié)果如下:
p1 = displaypoints(sc);
disp(p1)
用 modifybins 函數(shù)來(lái)調(diào)整對(duì)變量的每個(gè)分箱的文字描述。
評(píng)分卡的分?jǐn)?shù)通常要按照一定的比例調(diào)整并四舍五入進(jìn)行取整。可用 formatpoints 函數(shù)來(lái)進(jìn)行這些操作。 (鏈接如下)https://ww2.mathworks.cn/help/finance/creditscorecard.formatpoints.html比如,可設(shè)定達(dá)到一定好壞樣本比例(odds ratio)的分箱可以獲得的分?jǐn)?shù),以及每次該比例翻倍時(shí)候可以增加的分?jǐn)?shù)。運(yùn)行代碼如下:
步驟7. 對(duì)樣本進(jìn)行評(píng)分用 score 函數(shù)來(lái)計(jì)算訓(xùn)練集中的樣本的分?jǐn)?shù)。(鏈接如下)https://ww2.mathworks.cn/help/finance/creditscorecard.score.html也可以用該函數(shù)來(lái)計(jì)算其它樣本的分?jǐn)?shù),比如預(yù)留的用來(lái)驗(yàn)證模型的測(cè)試集樣本。該函數(shù)也可以顯示每個(gè)客戶樣本在每個(gè)自變量上所獲得的分?jǐn)?shù)。運(yùn)行代碼如下:
[Scores,Points] = score(sc);
disp(Scores(1:10))
disp(Points(1:10,:))
528.2044
554.8861
505.2406
564.0717
554.8861
586.1904
441.8755
515.8125
524.4553
508.3169
步驟8. 計(jì)算違約概率PD用 probdefault 函數(shù)來(lái)計(jì)算違約概率 pd. (鏈接如下)https://ww2.mathworks.cn/help/finance/creditscorecard.probdefault.htmlpd = probdefault(sc);定義好樣本的概率,并將好壞樣本的比率 (odds) 和對(duì)應(yīng)的評(píng)分卡分?jǐn)?shù)畫(huà)圖顯示。圖中我們可以看出,樣本的分?jǐn)?shù)與對(duì)應(yīng)的好壞樣本比(odds)相吻合,并且滿足預(yù)定義的“odds翻倍則分?jǐn)?shù)增加50“。運(yùn)行代碼如下:
步驟 9. 利用 CAP、ROC 和 Kolmogorov-Smirnov 檢驗(yàn)來(lái)驗(yàn)證信用評(píng)分卡模型Creditscorecard 這個(gè)對(duì)象支持三種驗(yàn)證方式: CAP,ROC 和 K-S 檢驗(yàn)。 更多關(guān)于這三種檢驗(yàn)方式的信息,參見(jiàn) validatemodel. 運(yùn)行代碼如下:
原文標(biāo)題:實(shí)用案例 | 用 Binning Explorer 小程序創(chuàng)建評(píng)分卡
文章出處:【微信公眾號(hào):MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
matlab
+關(guān)注
關(guān)注
188文章
2990瀏覽量
232887 -
小程序
+關(guān)注
關(guān)注
1文章
241瀏覽量
12696
原文標(biāo)題:實(shí)用案例 | 用 Binning Explorer 小程序創(chuàng)建評(píng)分卡
文章出處:【微信號(hào):MATLAB,微信公眾號(hào):MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
MATLAB在工程中的應(yīng)用
MATLAB仿真在直流電機(jī)雙閉環(huán)調(diào)速系統(tǒng)中的應(yīng)用
如何運(yùn)用MATLAB來(lái)控制DLP4500?
用ADS1258做了一塊采集卡,請(qǐng)問(wèn)有比較簡(jiǎn)單的測(cè)試方法來(lái)測(cè)試我的采集卡的性能和精度嗎?
Simulink與 MATLAB 的結(jié)合使用 Simulink中的信號(hào)處理方法
Pure path studio內(nèi)能否自己創(chuàng)建一個(gè)component,來(lái)實(shí)現(xiàn)特定的算法,例如LMS算法?
MATLAB-網(wǎng)頁(yè)訪問(wèn)與關(guān)閉
MATLAB中的矩陣索引

評(píng)論