本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
接上文《评分卡实例-数据准备》
前文提要与本文概述
经过上一节的特征工程,我们得到了处理好的评分卡入模变量数据,即如下的评分卡WOE变量表
在本文,我们讲解,如何使用这张WOE变量表的数据建立逻辑回归模型
本节讲解评分卡建模前需要做什么数据处理
评分卡 建模数据预处理概述
为了获得更好的建模效果,
在进行建模之前,需要将数据进行以下处理
👉数据归一化 :目的是让模型求解效果更好
👉预留测试数据 :目的是避免模型过拟合
数据归一化
归一化的数据能令逻辑回归的求解提供便利,
一般在调用逻辑回归之前,需要将数据进行归一化
归一化公式
归一化是指将数据缩放到[0,1]之间
归一化公式如下
✍️ 归一化举例说明
以特征rev_grp为例,
它的最小取值、最大取值如下(即上面的woe值)
rev_grp的最大值:2.11168472653793,
rev_grp的最小值:-1.49519682401574,
对rev_grp统一作归一化如下:
预留测试数据
我们一般需要预留数据用于模型测试,避免模型过拟合
一般来说,可以将建模数据按80%、20%的比例随机分割
将80%的数据用于建模,另外20%数据用于测试
本节讲解如何挑选出评分卡中的关键入模变量
为什么要选出关键变量
逻辑回归过拟合的原因主要来源于变量个数过多,如果在保障模型效果的同时,
选择尽量少的变量参与逻辑回归模型,可以令逻辑回归更不易于过拟合
所以,一般来说,我们不直接使用逻辑回归进行建模,
而是先在逻辑回归外套用一层逐步回归,选出对模型贡献较大的关键变量,再用关键变量建模。
逐步回归
逐步回归是挑选模型关键变量的一个常用的方法。
逐步回归流程
1. 历遍所有变量,将单个变量与目标建模,把模型结果最好的变量作为第一轮选择变
2. 在第一轮选择变量的基础上,添加第二个变量,
历遍剩余变量,添加哪个变量能令模型结果最好,就将其作为第二轮选择变量。
3. 在第二轮的基础上,添加第三个变量......
......
直到变量不再对拟合结果带来明显贡献时,就不再添加变量。
通过逐步回归,既保障了模型的效果,又尽量减少变量的个数
逐步回归示例
下面是代码逐步回归的过程
===========逐回步归过程=========================================
本轮最佳AUC: 0.7795006264657118 ,本轮最佳变量: rev_grp
本轮最佳AUC: 0.8185444487466065 ,本轮最佳变量: due3059_grp
本轮最佳AUC: 0.8409263010041067 ,本轮最佳变量: due90_grp
本轮最佳AUC: 0.8481362757441896 ,本轮最佳变量: due6089_grp
本轮最佳AUC: 0.8523766095383651 ,本轮最佳变量: age_grp ,效果不明显,不再添加变量
最终选用变量 4 个: Index(['rev_grp', 'due3059_grp', 'due90_grp', 'due6089_grp'], dtype='object')
可以看到,在加入第5个变量,age_grp时,AUC增长并不明显,则可以停止添加变量
只使用前4轮挑出的变量:rev_grp,due3059_grp,due90_grp,due6089_grp
本节讲解评分卡建模时模型的正式训练
评分卡的模型训练
将选出的变量,放到逻辑回归模型中建模,
逻辑回归模型训练较为简单,可调参数也较少,在这一步直接调用模型进行训练即可
关键代码如下:
clf =LogisticRegression(penalty='none')
clf.fit(X_train[:,select_fetures_idx],y_train)
训练时, sklearn默认加入L2正则项,训练时可先将penalty选项设为'none'(即不加入正则项),
如果最后训练系数不满意,再改回'l2'训练。
评分卡的模型训练结果
模型训练完成,就可得到各个特征的权重w和阈值b:
=========模型参数==========
模型系数(对应原始数据): [0.6851 0.5038 0.5355 0.3734 ]
模型阈值(对应原始数据): -2.5950
即模型的表达式为
注意
这里提取的是对应建模数据(即之前的woe数据)的权重和阈值
而不是归一化后数据得到的模型权重阈值哦
本节讲解评分卡建模完成后,如何评估模型
评分卡建模后的模型评估
评分卡模型的AUC评估
逻辑回归的模型评估一般是使用AUC
分别计算训练样本和测试样本的AUC,然后根据AUC进行评估模型是否可投产
AUC和投产的关系一般如下
👉AUC>0.63:模型对y有区分度(不可投产)
👉AUC>0.68:有效益(不可投产)
👉AUC>0.73:模型才算优秀(可投产)
评分卡模型的系数审查
除了评估AUC,还需要检验模型的系数是否符合业务逻辑
1.检查系数符号的合理性
由于经过WOE转换,所有特征与badRate都是正相关,因此,系数应都为正数
如果为负数,需要检验模型哪里出了问题
2. 检查系数在业务的合理性
除了系数的符号,还应留意模型的系数与业务理解有没有太大的出入,
例如,某个变量的系数远远大于其它变量的系数,那也是是不正常的
如果模型AUC过低,或系数异常,则需要返回排查问题,思考原因,这不在本文范畴,有时间再开文详述
评分卡的建模到这里就完成了~ 下张文章我们再讲解如何将模型制作成评分卡
End