實用案例 | 用 Binning Explorer 小程序創建評分卡題

?

這個案例展示如何運用 MATLAB 中自帶的 Binning Explorer 小程序來創建信用評級中的評分卡。

用 Binning Explorer 對樣本進行分箱操作, 創建圖表來展示分箱信息,并將創建的對象”creditscorecard”導出。

然后利用 creditscorecard 對象,結合 Financial Toolbox? 中的函數來對邏輯回歸模型進行擬合, 為樣本進行評分并計算違約概率(PD),然后用三個不同的指標對評分卡模型進行驗證。

  • 步驟1 將樣本數據導入到 MATLAB 的工作區

  • 步驟2 將數據導入到 Binning Explorer 小程序

  • 步驟3 在 Binning Explorer 中對分箱做進一步調整

  • 步驟4 在 Binning Explorer 中將 creditscorecard 對象導出

  • 步驟5 對邏輯回歸模型進行擬合

  • 步驟6 檢查并調整評分卡分數的比例

  • 步驟7 對樣本進行評分

  • 步驟8 計算違約概率 PD

  • 步驟9 用 CAP,ROC,KS 檢驗來對信用評分卡模型進行驗證

????◆??

步驟1. 將樣本數據導入到 MATLAB 的工作區

將保存在 CreditCardData.mat 中的數據導入 MATLAB? 工作區 (使用 Refaat 2011 的數據). 運行代碼如下:

load CreditCardData

disp(data(1:10,:))

圖片

 
 

步驟2.?將數據導入到 Binning Explorer 小程序

方法一, 從 MATLAB 工具欄中打開?Binning Explorer?: 在?Apps 菜單下, 找到計算金融學(Computational Finance), 點擊 Binning Explorer 的圖標.?

方法二, 在 MATLAB 中運行如下命令行 .?

binningExplorer

(更多關于啟動 Binning Explorer 小程序的信息, 參見?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?的工具欄,點擊?Import Data?按鈕來打開導入數據的窗口.

圖片

在?Step 1(第一步)下, 選擇 data 為需要導入的數據

在?Step 2(第二步)下, 可在?Variable Type?下為每個變量指定其類型. 缺省設置下,數據的最后一列(本例中為’status’)為‘Response’, 也就是因變量。因變量的值最好的樣本(本例中為“0“)被標記為'Good'. 所有其它的變量被歸為因變量。此外, 在這個例子中,'CustID'(客戶的編號)不是一個包含信息的因變量, 因此把?Variable Type?下面的'CustID' 對應設為?Do not include

注意?

圖片

如果導入的數據中有一列是各個因變量的權重,那么在?Step 2?的下面, 對應的?Variable Type?, 應在下拉菜單中選中?Weights.?關于在creditscorecard 對象中應用樣本的權重, 參見?Credit Scorecard Modeling Using Observation Weights?(鏈接如下).

https://ww2.mathworks.cn/help/finance/credit-scorecard-using-weights.html

如果原始數據中有部分數據缺失,那么在?Step 2?, 將?Bin missing data?設置為?Yes. 關于這部分的更詳盡信息,參見?Credit Scorecard Modeling with Missing Values (鏈接如下).

https://ww2.mathworks.cn/help/finance/credit-scorecard-modeling-with-missing-values.html

在?Step 3, 選擇?Monotone?作為缺省的初始化的分箱算法。

點擊?Import Data?完成這一導入數據的步驟。在數據導入的過程中,Binning Explorer?采用我們之前選中的算法自動的對應每個自變量對樣本進行分箱。

每個自變量對應的樣本分箱的結果都單獨以柱狀圖的形式顯示如下。點擊其中一個因變量,對應的分箱結果的詳細信息就會在左下角的?Bin Information?以及右下角的?Predictor Information?這兩個面板中顯示出來。

圖片

Binning Explorer?對應每個自變量,都對樣本自動進行分箱。采用的缺省算法是“Monotone”。該算法是針對信用評分卡最理想的算法,因為通過該算法得出的樣本數據的分箱結果,對應每個分箱的 WOE(Weight of Evidence)都是盡可能(完全或近似的)呈單調線性的趨勢(線性遞增或遞減)。在本例中各個自變量的分箱圖中可以看到 WOE 這一單調性的趨勢。

我們來看一下如何對數據進行一些初步的分析。以'ResStatus'(居住狀況)這個類別型變量(categorical variable)為例。

點擊?ResStatus?的分箱圖. 在?Bin Information?面板中包含了不同分箱(分組)的好樣本和壞樣本的數量和其他的分箱信息如 WOE。以“Tenant”這一分箱(樣本人的居住狀況為“租房”)為例:在租房居住的樣本中,307 個為好樣本(沒有發生過違約),167 個壞樣本(有違約記錄)好樣本與壞樣本之比(Odds)為1.8383。

圖片

對于數值型的變量, 以 CustIncome ?為例,點擊?CustIncome?的分箱圖。則?Bin Information?的面板中的數據更新為?CustIncome?的分箱信息。

圖片

步驟3.?對分箱結果進行手動調整

以?CustAge (客戶年齡)? 為例,點擊?CustAge?這個變量的分箱圖。注意第一組和第二組分箱(年齡為 33 歲以下,以及 33 到 37 歲)的 WOE 非常接近,第五組和第六組分箱也是類似情況. 我們認為這兩對相鄰的分組并沒有把樣本更好的區分開來,也就是說,這樣的分組并沒有給接下來的打分操作(以便區分好樣本和壞樣本)帶來可以明顯區分的信息。因此可以將這兩對分組分別合并。

圖片

要合并第一組和第二組分箱,我們進行如下操作:

在?Binning Explorer?菜單下, 點擊?Manual Binning?可將當前選中的變量 CustAge 在一個新的窗口下打開(Manual Binning: CustAge). 您也可以直接用鼠標雙擊對應變量的圖來打開?Manual Binning?窗口. 用?Ctrl +?鼠標點擊來同時選中要合并的分箱 1 和 2,此時兩個分箱的柱狀圖會被藍色邊框圈起來。

圖片

?Manual Binning?菜單下,?Edges?右邊的兩個文本框顯示的是將要合并的兩個分箱所涵蓋的變量的取值的范圍,本例是從 0 到 37 歲(不含37歲)。

?

圖片

點擊?Merge?將前兩個分箱合并。此時在 Overview 窗口下面的?CustAge?的圖已經更新為了合并后的新的分箱的圖例,同時在?Bin Information?和?Predictor Information?面板下的數據也會相應更新。

圖片

接下來,合并初始的第 4 和第 5 分箱(上面合并步驟后的第 3 和第 4 分箱,即 46~48 歲組和 48 到 58 歲組), 因為這兩組的 WOE 也非常接近.

圖片

變量?CustAge?的分箱圖在前面兩個合并操作后已經更新為了新的信息。Bin Information?和?Predictor Information?這兩個面板的信息也同樣更新了。(注:?Predictor Information?在合并操作后沒有變化,是因為這兩次操作并沒有改變具體的樣本,因此沒有影響到該面板下的四個數據統計的信息)

對下面這些有接近的 WOE 的分箱進行類似的合并操作:

  • 變量?CustIncome?(客戶的收入情況), 合并分箱 3、4 和5.

  • 變量?TmWBank?(在該銀行的開戶時長), 合并分箱 2 和 3.

  • 變量?AMBalance, (賬戶平均每月盈余),合并分箱 2 和 3.

現在所有變量的分箱顯示的 WOE 都為近似線性單調(遞增或遞減)的趨勢.

步驟4. 將 creditscorecard 對象從 Binning Explorer 導出到工作區

在完成所有分箱的操作之后,在?Binning Explorer?菜單下,點擊?Export Scorecard?然后給 creditscorecard 這個對象命名. 本例中將該對象命名為“sc”保存到工作區 .

步驟5. 進行邏輯回歸擬合

通過?fitmodel?函數來對WOE數據進行邏輯回歸的擬合.?(鏈接如下)

https://ww2.mathworks.cn/help/finance/creditscorecard.fitmodel.html

fitmodel 會對訓練集的數據樣本進行分箱,將其轉化成相應的 WOE 的值,并與相應因變量的值進行映射,(即好樣本對應的因變量值為1)然后做線性的邏輯回歸模型的擬合。缺省設置下,fitmodel 逐一將變量進行測試來決定是否將其納入模型中作為自變量. 代碼運行結果如下:

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. 檢查并調整評分卡的分數

在進行模型擬合之后,各個變量的分箱對應評分卡的分數尚未按照比例進行調整,是直接以WOE 值和模型變量的系數的乘積得來的分數。用??displaypoints?函數可以看到評分卡上所有的分箱和對分數.?(鏈接如下)

https://ww2.mathworks.cn/help/finance/creditscorecard.displaypoints.html

代碼運行結果如下:

p1 = displaypoints(sc);
disp(p1)

圖片

用?modifybins?函數來調整對變量的每個分箱的文字描述.?(鏈接如下)

https://ww2.mathworks.cn/help/finance/creditscorecard.modifybins.html

 

圖片

圖片

 

評分卡的分數通常要按照一定的比例調整并四舍五入進行取整。可用?formatpoints?函數來進行這些操作.?(鏈接如下)

https://ww2.mathworks.cn/help/finance/creditscorecard.formatpoints.html

比如,可設定達到一定好壞樣本比例(odds ratio)的分箱可以獲得的分數,以及每次該比例翻倍時候可以增加的分數。運行代碼如下:

圖片

 

圖片

 

步驟7. 對樣本進行評分

用?score?函數來計算訓練集中的樣本的分數。(鏈接如下)

https://ww2.mathworks.cn/help/finance/creditscorecard.score.html

也可以用該函數來計算其它樣本的分數,比如預留的用來驗證模型的測試集樣本。該函數也可以顯示每個客戶樣本在每個自變量上所獲得的分數。運行代碼如下:

[Scores,Points] = score(sc);
disp(Scores(1:10))
disp(Points(1:10,:))
  528.2044554.8861505.2406564.0717554.8861586.1904441.8755515.8125524.4553

508.3169

圖片

步驟8. 計算違約概率PD

用?probdefault?函數來計算違約概率 pd.?(鏈接如下)

https://ww2.mathworks.cn/help/finance/creditscorecard.probdefault.html

pd = probdefault(sc);

定義好樣本的概率,并將好壞樣本的比率 (odds) 和對應的評分卡分數畫圖顯示。圖中我們可以看出,樣本的分數與對應的好壞樣本比(odds)相吻合,并且滿足預定義的“odds翻倍則分數增加50“。運行代碼如下:

圖片

 

圖片

步驟 9. 利用 CAP、ROC 和 Kolmogorov-Smirnov 檢驗來驗證信用評分卡模型

Creditscorecard 這個對象支持三種驗證方式: CAP,ROC 和 K-S 檢驗. 更多關于這三種檢驗方式的信息,參見?validatemodel. 運行代碼如下:?(鏈接如下)

https://ww2.mathworks.cn/help/finance/creditscorecard.validatemodel.html

圖片

圖片

圖片

圖片

圖片

圖片

?

??免費分享一些我整理的人工智能學習資料給大家,整理了很久,非常全面。包括一些人工智能基礎入門視頻+AI常用框架實戰視頻、圖像識別、OpenCV、NLP、YOLO、機器學習、pytorch、計算機視覺、深度學習與神經網絡等視頻、課件源碼、國內外知名精華資源、AI熱門論文等。

下面是部分截圖,加我免費領取

目錄

一、人工智能免費視頻課程和項目

二、人工智能必讀書籍

三、人工智能論文合集

四、機器學習+計算機視覺基礎算法教程

最后,我想說的是,自學人工智能并不是一件難事。只要我們有一個正確的學習方法和學習態度,并且堅持不懈地學習下去,就一定能夠掌握這個領域的知識和技術。讓我們一起抓住機遇,迎接未來!

上面這份完整版的Python全套學習資料已經上傳至CSDN官方,朋友如果需要可以點擊鏈接領取?

二維碼詳情

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209404.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209404.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209404.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于深度學習路徑規劃RRT*-訓練圖像預處理

基于深度學習路徑規劃RRT*-訓練圖像預處理 圖像預處理說明 在基于采樣的RRT算法對機器人進行路徑規劃時,由于采樣點的隨機性,會增加路徑的搜索時間的路徑的非最優性,所以基于神經網絡的優勢,利用深度學習進行RRT的隨機采樣&…

使用webstrom編寫vue開啟提示

1.語言服務器選擇 2.文件類型–忽略的文件和文件夾,刪去,node_modules,就可以點進去庫了 3.禁用JSLint、TSLint 4.開啟node輔助 5.如果是vite,開啟自動讀取,或手動指定 6.如果是Webpack,開啟自動讀取&#…

go-zero開發入門-API網關開發示例

開發一個 API 網關,代理 https://blog.csdn.net/Aquester/article/details/134856271 中的 RPC 服務。 網關完整源代碼 // file: main.go package mainimport ("flag""fmt""github.com/zeromicro/go-zero/core/conf""github.c…

Git提交代碼時出現: ‘LF will be replaced by CRLF the next time Git touches it‘

遇到的問題 windows平臺進行 git add 時,控制臺打印警告 問題分析 1. Dos/Windows平臺默認換行符:回車(CR)換行(LF),即’\r\n’ 2. Mac/Linux平臺默認換行符:換行(LF&…

小調查:你申請的流量卡,快遞員派件時讓你激活并充話費了嗎?

說到這個問題,就要給大家普及一下流量卡的激活方式了,并不是所有的流量卡快遞都需要快遞激活并充話費,只有在套餐詳情種明確標注快遞激活的流量卡才會有這個要求,自主激活的流量卡則不需要的。 如圖所示: 接下來&#…

網絡規劃的組成

網絡規劃是網絡建設過程中非常重要的環節,同時也是一個系統性的過程。網絡規劃應該以需求為基礎,同時考慮技術和工程的可行性。具體來說,網絡規劃包括網絡需求分析、可行性分析和對現有網絡的分析與描述。 1.網絡需求分析在網絡組建之前&…

已通過考試和認證注冊以及后續計劃表

已通過考試和認證注冊以及后續計劃表 軟考 - 計算機技術與軟件專業技術資格(水平)考試信息系統集成及服務項目管理人員工程類考試計劃你關注的證書樣子 軟考 - 計算機技術與軟件專業技術資格(水平)考試 高級 信息系統項目管理師&…

鴻蒙開發組件之Image

Image組件加載圖片方式有三種: 1、網絡地址加載 直接Image(xxxx),添加上圖片的網絡地址就可以了。注意:真機、模擬題調試需要申請"ohos.permission.INTERNET"權限 Image(https://xxxxxxx) 2、PixelMap格式加載像素圖 Image(PixelMapObjec…

整數在內存中的存儲

整數和浮點數在內存中的存儲方式是不一樣的,今天,我們來具體學習一下 文章目錄 整數在內存中的存儲浮點數在內存中的存儲 整數在內存中的存儲 我們在之前就已經了解過了整數有原碼,反碼,補碼的形式,這三種方式都是二進…

php使用vue.js實現省市區三級聯動

參考gpt 有問題問gpt 實現效果 現省市區三級聯動的方法可以使用PHP結合AJAX異步請求來實現。下面是一個簡單的示例代碼&#xff1a; HTML部分&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>省市區三級聯動…

【vtkWidgetRepresentation】第七期 vtkImplicitPlaneRepresentation

很高興在雪易的CSDN遇見你 前言 本文分享vtkImplicitPlaneRepresentation源碼剖析&#xff0c;及相關的實例&#xff0c;該接口主要用于切割交互&#xff0c;希望對各位小伙伴有所幫助&#xff01; 感謝各位小伙伴的點贊關注&#xff0c;小易會繼續努力分享&#xff0c;一起…

TCP Keepalive 和 HTTP Keep-Aliv

HTTP的Keep-Alive 在http1.0的版本中&#xff0c;它是基于請求-應答模型和TCP協議的&#xff0c;也就是在建立TCP連接后&#xff0c;客戶端發送一次請求并且接收到響應后&#xff0c;就會立馬斷開TCP連接&#xff0c;稱為HTTP短連接&#xff0c;這種方式比較耗費時間以及浪費資…

亞馬遜運營推薦數倉項目實戰

亞馬遜運營推薦數倉項目實戰 項目技術棧 HadoopSpark (Python)Scala SparkSQLSparkStreaming MongoDB Redis Kafka Flume ( SpringMVC vue) 1 項目介紹 1.1 項目系統架構 項目以推薦系統建設領域知名的經過修改過的中文亞馬遜電商數據集作為依托&#xff0c;以某電商…

《ReactJS實踐入門》:引領JavaScript前端開發的革新之旅

在當今的軟件開發世界中&#xff0c;ReactJS無疑是最為引人注目的JavaScript庫之一。對于初學者來說&#xff0c;如何深入理解并掌握這一強大的前端工具&#xff0c;進而應用到實際開發中&#xff0c;一直是他們所面臨的問題。而《ReactJS實踐入門》一書&#xff0c;正是為了解…

單片機雙機通信控制跑馬燈

實驗要求 兩個單片機各驅動8個LED燈&#xff0c;構成兩個跑馬燈&#xff0c;要求甲單片機LED的點亮方式是從上至下&#xff0c;首先是最上面第一個點亮、其次是前兩個點亮、其次是前三個點亮……直至8個燈全部點亮&#xff0c;8個燈全部滅&#xff0c;重復這個過程&#xff0c…

Qt 鼠標左鍵推拽界面

代碼實現&#xff1a; button 返回 哪個按鈕造成了此事件&#xff0c;buttons 返回 發生此事件時哪些按鈕還處于按下狀態 對于ComboBox這種控件有bug&#xff0c;我也不知道咋修改 private:// 記錄坐標差值QPoint diff;QPoint now_pos;bool m_MouseDrag;void Dialog::mousePr…

Java 俄羅斯方塊

游戲規則 由小方塊組成的不同形狀的板塊陸續從屏幕上方落下來&#xff0c;玩家通過調整板塊的位置和方向&#xff0c;使它們在屏幕底部拼出完整的一條或幾條。這些完整的橫條會隨即消失&#xff0c;給新落下來的板塊騰出空間&#xff0c;與此同時&#xff0c;玩家得到分數獎勵…

如何恢復已刪除的 JPG/JPEG 文件的方法深度解析!

您是否意外丟失或刪除了 JPG 或 JPEG 照片&#xff1f;幸運的是&#xff0c;您可以使用照片恢復工具將它們恢復。立即獲取適用于 PC 的 JPEG 恢復工具 - 照片恢復&#xff1a; 照片是捕捉和重溫生活中特殊時刻的最佳方式。因此&#xff0c;當我們由于硬盤崩潰、意外格式化磁盤…

linux Ubuntu下,第一個C++程序訪問數據庫,遇到的問題,及解決辦法

在ubuntu下安裝了mysql&#xff0c;mysql以后&#xff0c;編寫了第一個訪問數據庫的程序&#xff1a; #include <iostream> #include <string> #include <cstdlib> //for system #include <mysql.h>using namespace std;int main() {mysqlpp::Connect…

《算法通關村——透析跳躍游戲》

《算法通關村——透析跳躍游戲》 55. 跳躍游戲 給你一個非負整數數組 nums &#xff0c;你最初位于數組的 第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最后一個下標&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否則&a…