实用案例 | 用 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.mzph.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,开启自动读取&#…

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&…

小调查:你申请的流量卡,快递员派件时让你激活并充话费了吗?

说到这个问题,就要给大家普及一下流量卡的激活方式了,并不是所有的流量卡快递都需要快递激活并充话费,只有在套餐详情种明确标注快递激活的流量卡才会有这个要求,自主激活的流量卡则不需要的。 如图所示: 接下来&#…

已通过考试和认证注册以及后续计划表

已通过考试和认证注册以及后续计划表 软考 - 计算机技术与软件专业技术资格(水平)考试信息系统集成及服务项目管理人员工程类考试计划你关注的证书样子 软考 - 计算机技术与软件专业技术资格(水平)考试 高级 信息系统项目管理师&…

鸿蒙开发组件之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;一起…

亚马逊运营推荐数仓项目实战

亚马逊运营推荐数仓项目实战 项目技术栈 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…

如何恢复已删除的 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…

[ROS2] --- param

1 param介绍 类似C编程中的全局变量&#xff0c;可以便于在多个程序中共享某些数据&#xff0c;参数是ROS机器人系统中的全局字典&#xff0c;可以运行多个节点中共享数据。 全局字典 在ROS系统中&#xff0c;参数是以全局字典的形态存在的&#xff0c;什么叫字典&#xff1f;…

keepalived+lvs 对nginx做负载均衡和高可用

LVS_Director KeepAlivedKeepAlived在该项目中的功能&#xff1a; 1. 管理IPVS的路由表&#xff08;包括对RealServer做健康检查&#xff09; 2. 实现调度器的HA http://www.keepalived.orgKeepalived所执行的外部脚本命令建议使用绝对路径实施步骤&#xff1a; 1. 主/备调度器…

深度解析IP应用场景API:提升风险控制与反欺诈能力

前言 在当今数字化时代&#xff0c;网络安全和用户数据保护成为企业日益关注的焦点。IP应用场景API作为一种强大的工具&#xff0c;不仅能够在线调用接口获取IP场景属性&#xff0c;而且具备识别IP真人度的能力&#xff0c;为企业提供了卓越的风险控制和反欺诈业务能力。本文将…

Java数据结构06——树

1.why: 数组&链表&树 2. 大纲 2.1前中后序 public class HeroNode {private int no;private String name;private HeroNode left;//默认为nullprivate HeroNode right;//默认为nullpublic HeroNode(int no, String name) {this.no no;this.name name;}public int …

Ubuntu编译文件安装SNMP服务

net-snmp源码下载 http://www.net-snmp.org/download.html 编译步骤 指定参数编译 ./configure --prefix/root/snmpd --with-default-snmp-version"2" --with-logfile"/var/log/snmpd.log" --with-persistent-directory"/var/net-snmp" --wi…

MinIO集群模式信息泄露漏洞(CVE-2023-28432)

前言&#xff1a;MinIO是一个用Golang开发的基于Apache License v2.0开源协议的对象存储服务。虽然轻量&#xff0c;却拥有着不错的性能。它兼容亚马逊S3云存储服务接口&#xff0c;非常适合于存储大容量非结构化的数据。该漏洞会在前台泄露用户的账户和密码。 0x00 环境配置 …