参考资料:
cart决策树分箱法:https://blog.csdn.net/weixin_42097808/article/details/80172824
IV及WOE详解:https://blog.csdn.net/kevin7658/article/details/50780391
卡方分箱:https://blog.csdn.net/hxcaifly/article/details/80203663
bad rate单调性:https://blog.csdn.net/shenxiaoming77/article/details/79548807
建模数据集:https://www.kaggle.com/uciml/default-of-credit-card-clients-dataset/home/
贝叶斯因子:https://www.sohu.com/a/196264891_687826
金融行业常用的评分卡模型主要包含如下几个主流程:
一、数据准备
数据源主要包含行内行外两部分:行内的有客户的基础人口统计特征数据、交易历史数据、信用历史数据等;外部数据有人行征信数据、第三方征信机构数据及社交行为数据等。
二、数据探索
对获得的原始数据进行进一步的探索,观察样本的总体分布情况,正负样本是否均衡? --不均衡样本的处理方法:从数据角度、从算法角度、代价敏感学习
单变量分布是否满足正态分布?
变量的缺失情况? --缺失值处理方法:整列删除、众数填充
是否有异常值? --箱线图观察、woe变换可以消除异常值影响
变量间的共线性情况如何,评分卡模型主要是使用逻辑回归算法进行建模,要求变量间共线性尽可能低。 --热力图观察变量间共线性,
变量规模
一切就绪后,确定模型的观察期和表现期,确定数据集分割方法,划分训练集和测试集。??--确定坏用户的标准?逾期多久算违约
三、数据预处理
主要工作包括数据清洗、缺失值处理、异常值处理、数据标准化等,主要目的是将获取的原始数据转变成可用于建模的结构化数据。
类别变量处理方式:无序类别变量、有序类别变量
连续变量处理方式:分箱、
在信用评分卡中一般使用逻辑回归作为主要的模型。过程主要包括变量分箱、变量的WOE(证据权重)变换和变量选择(IV值)、逻辑回归估算。
(1)类别变量根据类别直接进行WOE变换,连续变量要先进行变量分箱再进行WOE变换。
(2)特征处理阶段主要有两个概念:WOE和IV。
1.分箱——将连续变量离散化,或者将具有很多状态的离散变量合并成少状态
2.分箱的优势:
-对异常值不敏感,如年龄300岁;
-降低模型过拟合风险;
-可以学习到样本的非线性信息?
3.分箱方法:
无监督:等宽、等频、聚类(k-means)
有监督:卡方分箱法、单变量决策树算法(ID3、C4.5、CART)、IV最大化分箱法、best-ks分箱法
creportgen.utils.discretization
4.卡方分箱算法:
卡方分箱是自底向上的(即基于合并的)数据离散化方法。具有最小卡方值的相邻区间合并在一起,直到满足确定的停止准则。
4.1基本思想:对于精确的离散化,相对类频率在一个区间内应当完全一致。因此,如果两个相邻的区间具有非常类似的类分布,则这两个区间可以合并;否则,它们应当保持分开。而低卡方值表明它们具有相似的类分布。
4.2分箱步骤:
1)设定卡方阈值
2)根据要离散的属性值对实例进行排序
3)计算每一对相邻区间的卡方值
4)将卡方值最小的一对区间进行合并
5)重复3)4)两步直至满足停止条件
停止条件有如下两种选择:
(1)分箱个数:限制最终的分箱个数结果,每次将样本中具有最小卡方值的 区间与相邻的最小卡方区间进行合并,直到分箱个数达到限制条件为止。
(2)卡方阈值:根据自由度和显著性水平得到对应的卡方阈值,如果分箱的各区间最小卡方值小于卡方阈值,则继续合并,直到最小卡方值超过设定阈值为止。
4.3卡方阈值的确定: 根据显著性水平和自由度得到卡方值 ,卡方阈值的自由度为 分箱数-1,显著性水平可以取10%,5%或1%。
例如:有3类,自由度为2,则90%置信度(10%显著性水平)下,卡方的值为4.6。
4.4阈值的意义
类别和属性独立时,有90%的可能性,计算得到的卡方值会小于4.6。 大于阈值4.6的卡方值就说明属性和类不是相互独立的,不能合并。如果阈值选的大,区间合并就会进行很多次,离散后的区间数量少、区间大。
5.分箱后检验Bad Rate单调性
Bad Rate:坏样本率,指的是将特征进行分箱之后,每个bin下的样本所统计得到的坏样本率
bad rate 单调性与不同的特征场景:
在评分卡模型中,对于比较严格的评分模型,会要求连续性变量和有序性的变量在经过分箱后需要保证bad rate的单调性。
1. 连续性变量:
在严格的评分卡模型中,对于连续型变量就需要满足分箱后 所有的bin的 bad rate 要满足单调性,只有满足单调新的情况下,才能进行后续的WOE编码
2. 离散型变量:
离散化程度高,且无序的变量:
比如省份,职业等,我们会根据每个省份信息统计得到bad rate 数值对原始省份信息进行编码,这样就转化为了连续性变 量,进行后续的分箱操作,对于经过bad rate编码后的特征数据,天然单调。
只有当分箱后的所有的bin的bad rate 呈现单调性,才可以进行下一步的WOE编码。
离散化程度低,且无序的变量:
比如婚姻状况,只有四五个状态值,因此就不需要专门进行bad rate数值编码,只要求出每个离散值对应的bin的bad rate比例是否出现0或者1的情况,若出现说明正负样本的分布存在极端情况,需要对该bin与其他bin进行合并, 合并过程完了之后 就可以直接进行后续的WOE编码
有序的离散变量:
对于学历这种情况,存在着小学,初中,高中,本科,硕士,博士等几种情况,而且从业务角度来说 这些离散值是有序的, 因此我们在分箱的时候,必须保证bin之间的有序性,再根据bad rate 是否为0 或者1的情况 决定是否进行合并,最终将合并的结果进行WOE编码
因此bad rate单调性只在连续性数值变量和有序性离散变量分箱的过程中会考虑。
bad rate要求单调性的原因分析:
1. 逻辑回归模型本身不要求特征对目标变量的单调性。之所以要求分箱后单调,主要是从业务角度考虑,解释、使用起来方便一点。如果有某个(分箱后的)特征对目标变量不单调,会加剧模型解释型的复杂化
2. 对于像年龄这种特征,其对目标变量往往是一个U型或倒U型的分布,有些公司/部门/团队是允许变量的bad rate呈(倒)U型的。
5.WOE变换
其中,pyi是这个组中坏客户(此处风险模型中判别的是好坏客户)占所有样本中所有坏客户的比例,pni是这个组中好客户占样本中所有好客户的比例,#yi是这个组中坏客户的数量,#ni是这个组中好客户的数量,#yT是样本中所有坏客户的数量,#nT是样本中所有好客户的数量。
WOE表示的实际上是“当前分组中坏客户占所有坏客户的比例”和“当前分组中好客户占所有好客户的比例”的差异。WOE也可以这么理解,他表示的是当前这个组中坏客户和好客户的比值,和所有样本中这个比值的差异。这个差异是用这两个比值的比值,再取对数来表示的。WOE越大,这种差异越大,这个分组里的样本是坏客户的可能性就越大,WOE越小,差异越小,这个分组里的样本是坏客户的可能性就越小。
sklearn.reportgen.utils.weightOfEvidence
6.IV值计算
计算公式如下:
有了一个变量各分组的IV值,我们就可以计算整个变量的IV值,方法很简单,就是把各分组的IV相加:
其中,n为变量分组个数。
IV的特点:
a、对于变量的一个分组,这个分组的好用户和坏用户的比例与样本整体响应和未响应的比例相差越大,IV值越大,否则,IV值越小;
b、极端情况下,当前分组的好用户和坏用户的比例和样本整体的好用户和坏用户的比例相等时,IV值为0;
c、IV值的取值范围是[0,+∞),且,当当前分组中只包含好用户或者坏用户时,IV = +∞。
使用IV其实有一个缺点,就是不能自动处理变量的分组中出现响应比例为0或100%的情况。那么,遇到响应比例为0或者100%的情况,我们应该怎么做呢?建议如下:
(1)如果可能,直接把这个分组做成一个规则,作为模型的前置条件或补充条件;
(2)重新对变量进行离散化或分组,使每个分组的响应比例都不为0且不为100%,尤其是当一个分组个体数很小时(比如小于100个),强烈建议这样做,因为本身把一个分组个体数弄得很小就不是太合理。
(3)如果上面两种方法都无法使用,建议人工把该分组的响应数和非响应的数量进行一定的调整。如果响应数原本为0,可以人工调整响应数为1,如果非响应数原本为0,可以人工调整非响应数为1.
IV值判断变量预测能力的标准
< 0.02: unpredictive,0.02 to 0.1: weak,0.1 to 0.3: medium,0.3 to 0.5: strong,>0.5: suspicious,一般选取大于0.02的
四、建模准备
待补充:
特征筛选
逻辑回归建模
模型评估
模型输出