#######好好好好好#########笔记︱信用风险模型(申请评分、行为评分)与数据准备(违约期限、WOE转化)

本文主要是介绍#######好好好好好#########笔记︱信用风险模型(申请评分、行为评分)与数据准备(违约期限、WOE转化),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

巴塞尔协议定义了金融风险类型:市场风险、作业风险、信用风险。信用风险ABC模型有进件申请评分、行为评分、催收评分。




————————————————————————————————————


一、数据准备


1、排除一些特定的建模客户


用于建模的客户或者申请者必须是日常审批过程中接触到的,需要排除以下两类人:

异常行为:销户、按条例拒绝、特殊账户;

特殊账户:出国、卡丢失/失窃、死亡、未成年、员工账户、VIP;

其他:欺诈(根据反欺诈评分)、主动销户者(流失评分)


2、解释指标的选取


(1)申请评分所需指标


信用风险中,申请评分所采纳的指标有很多,譬如可以参考FICO信用分中的一些,参考:笔记︱金融风险控制基础常识——巴塞尔协议+信用评分卡Fico信用分

其中2.1FICO信用分的计算方法给出了一些评判标准


(2)行为评分所需指标


图片来自CDA-DSC课程中。




3、目标变量的确立


对于预测建模,定义目标变量是最重要、对建模结果影响最大的一步。银行业信用评分解决方案默认的目标时间定义选择二分类变量为:不良/逾期、良好。

不良/逾期:观察窗口内,观察窗口内,60/90/120天算逾期日期;

良好:从未或截止逾期;从未或在观察期内截止逾期


其中关于不良/逾期需要界定以下两项内容:确定违约日期时长、观察窗口期设置。


————————————————————————————————————


二、确定违约日期时长、观察窗口期设置



其中有两个时期,观察窗口期、预测窗口期。预测窗口期时间由账龄分析获取,观察窗口期大约就是预测窗口的3-5倍。巴塞尔协议中规定预测窗口期一般为12个月,所以一般实务中以12个月为窗口期。在已知预测窗口期之下,通过转移矩阵了解违约期具体时长。

(PS:虽然做了总结,但是还没明白老师上课所讲的,为什么这么做?怎么出结果?)


评论区网友Love_sf留言:

窗口期为一年12个月,观察窗口为预测窗口的3-5倍,即观察窗口为9个月,预测窗口3个月,或者观察窗口为10个月,预测窗口2个月,定义M2+或者M3+作为违约用户,这样才能用来建模预测坏用户出现概率。



1、违约日期的确定——转移矩阵


不同账期客户转移到更坏概率不同,选取显著变化的节点。



图中可以看出,第一个月不还拖欠到下一个月的概率为M0=7.96%,第二个月不还拖欠到下个月的有M1=57.26%,M2=64.48%,M3=79%,M4=83.77%。

从这里可以看出,第五个月是一个拐点,说明第五月之后就很难催到账务。所以,催帐日期可以选择3月。同时,超过5月包括5月的都属于违约行为。



2、违约窗口期设置——账龄分析


一般情况下巴塞尔协议硬性要求12个月及以上作为窗口期。一般情况下,观察窗口=3-5倍的预测窗口。


决定信用评等模型开发所需数据期间长度,一般会从最新资料的留存时点开始推算,利用账龄分析观察目标客户的违约成熟期长度,借此设定观察期长度(预测窗口的时间长度)。比如200901开卡的人,第10个月,稳定成熟了,绩效时间可以确定为10-12个月;200902开卡的人,第11个月,稳定成熟了,11-12个月。



————————————————————————————————————


三、数据重编码——WOE转换


由于制作评分卡的某些需要,通常会在建立评分模型时将自变量(连续+离散都可以)做离散化处理(等宽切割,等高切割,或者利用决策树来切割),但是模型本身没办法很好地直接接受分类自变量的输入。所以信用评分卡中常用的WOE转换。


WOE转换=分箱法=Logit值,与等深、等宽不同是根据被解释变量来重新定义一个WOE值(R语言︱噪声数据处理、数据分组——分箱法(离散化、等级化))。


WOE的公式就是:WOE=ln(好客户占比/坏客户占比)*100%=优势比


好客户占比=数量(x︱y=好)/总人数



WOE转化的优势:提升模型的预测效果,提高模型的可理解性。


1、WOE与违约概率具有某种线性关系

从而通过这种WOE编码可以发现自变量与目标变量之间的非线性关系(例如U型或者倒U型关系)。提升预测效果


2、WOE变量出现负值情况。

在此基础上,我们可以预料到模型拟合出来的自变量系数应该都是正数,如果结果中出现了负数,应当考虑是否是来自自变量多重共线性的影响。


3、标准化的功能。

WOE编码之后,自变量其实具备了某种标准化的性质,也就是说,自变量内部的各个取值之间都可以直接进行比较(WOE之间的比较),而不同自变量之间的各种取值也可以通过WOE进行直接的比较。


4、WOE能反映自变量的贡献情况。

自变量内部WOE值的变异(波动)情况,结合模型拟合出的系数,构造出各个自变量的贡献率及相对重要性。一般地,系数越大,woe的方差越大,则自变量的贡献率越大(类似于某种方差贡献率),这也能够很直观地理解。


5、异常值处理。

很多极值变量通过WOE可以变为非异常值.


譬如解决分类之后,一些案例个数过少的情况。案例个数过少的情况一般情况下可以合并,也可以用WOE转化来实现。

转化之后可能值变成这个样子,跳跃很大,可以作为用盖帽法等方法解决。


——————————————————————————————————————————


延伸案例一:机器学习算法基于信用卡消费记录做信用评分

文章来源云栖社区,作者傲海

数据集介绍

这是一份国外某机构开源的数据集,数据的内容包括每个用户的一些性别、教育、婚姻、年龄等属性,同时也包含用户过去一段时间的信用卡消费情况和账单情况。payment_next_month是目标队列,表示用户是否偿还信用卡账单,1表示偿还,0表示没有偿还。
数据供30000条。
数据集下载地址:https://www.kaggle.com/uciml/default-of-credit-card-clients-dataset
实验流程
先来看下实验图:
现在对一些关键节点进行介绍:
(1)拆分
将输入数据集分为两部分,一部分用来训练模型,另一部分用来预测评估。
(2)分箱
分箱组件类似于onehot编码,可以将数据按照分布映射成更高维度的特征。我们以age这个字段为例,分箱组件可以按照数据在不同区间的分布进行分享操作,分箱结果如图:

最终分箱组件的输出如图,每个字段都被分箱到多个区间上:
(3)样本稳定指数PSI
样本稳定指数是衡量样本变化所产生的偏移量的一种重要指标,通常用来衡量样本的稳定程度,比如样本在两个月份之间的变化是否稳定。通常变量的PSI值在0.1以下表示变化不太显著,在0.1到0.25之间表示有比较显著的变化,大于0.25表示变量变化比较剧烈,需要特殊关注。
本案例中,可以综合比较拆分前后以及分箱结果的样本稳定程度,返回每个特征的PSI数值:
(4)评分卡训练
评分卡训练的结果图如下:
评分卡的精髓是将复杂的比较难理解的一些模型权重用符合业务标准的分数表示。
  • intercepy表示的是截距
  • Unscaled是原始的权重值
  • Scaled是分数更改指标,比如对于pay_0这个特征,如果特征落在(-1,0]之间分数就减29,如果特征落在(0,1]之间分数就加上27.
  • importance表示每个特征对于结果的影响大小,数值越大表示影响越大
(5)评分卡预测
展示每个预测结果的最终评分,在本案例中表示的是每个用户的信用评分。
结论总结
基于用户的信用卡消费记录,最终通过评分卡模型的训练,我们在评分卡预测中可以拿到每个用户的最终信用评分,这个评分可以应用到其它的各种贷款或者金融相关的征信领域中去。评分卡相对于其他的模型的预测的优势是将计算结果权重直接沉淀成直观的分数,通过这样的评分看模型,可以快速的了解每个用户的信用分,每个客服人员的服务评分,每个手机的测评分数等等。

这篇关于#######好好好好好#########笔记︱信用风险模型(申请评分、行为评分)与数据准备(违约期限、WOE转化)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967681

相关文章

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat