老饼讲解:一步一步上手学习
接上文《评分卡实例-数据分箱处理》
前文提要与本文概述
经过上一节的特征工程,我们得到了处理好的评分卡入模变量数据,即如下的评分卡WOE变量表:
在本文,我们接着来看看,怎么利用这张WOE变量表的数据,来建立逻辑回归模型。
本节讲解评分卡建模前需要做什么数据处理。
评分卡使用逻辑回归模型进行建模,即使用上述的变量表(woe值)来预测"是坏样本"的概率, 为了获得更好的建模效果,在建模前需要将数据进行以下处理:
(一) 数据归一化
数据归一化是指将数据归一化到[0,1]之间,归一化可以让模型求解效果更好,同时在正则惩罚时能公平地惩罚各个变量,归一化公式如下:
以特征rev为例,它的最小、最大取值为-1.5056和2.7689, 则rev变量归一化时的计算如下:
(二) 预留测试数据
预留测试数据,用于测试模型的预测效果。
一般用80%的数据用于训练模型,预留20%的数据用于模型测试 。
逻辑回归过拟合的原因主要来源于变量个数过多,因此,在保障模型效果的同时,选择尽量少的变量进行建模,可以令模型更不易于过拟合,在评分卡中,一般使用逐步回归的来预筛选变量,减少入模变量个数。
下面我们来说说什么是逐步回归,逐步回归是挑选模型关键变量的一个常用的方法,简单来说,就是以逐个添加变量的方式进行建模,直到添加变量不能提升模型为止。
逐步回归的流程如下:
1. 历遍所有变量,将单个变量与y进行建模,把建模结果最好的变量作为第一轮选择变量。
2. 在第一轮选择变量的基础上,添加第二个变量。
历遍剩余变量,添加哪个变量能令模型结果最好,就将其作为第二轮选择变量。
3. 在第二轮的基础上,添加第三个变量......
......如此类推,直到变量不再对拟合结果带来明显贡献时,就不再添加变量。
在本实例中,逐步回归筛选变量的过程如下:

可以看到,在加入第6个变量,marital时,AUC增长并不明显,则停止继续添加变量,只使用前5轮挑出的变量:rev,due30,due90,city,due60。
本节讲解评分卡建模时模型的正式训练。
逻辑回归模型的训练较为简单,只需将选出的变量,放到逻辑回归模型中建模即可,在python中只需使用sklearn的LogisticRegression就可以训练一个逻辑回归模型,逻辑回归模型可调参数较少,在这一步直接调用模型进行训练即可,关键代码就两句,示例如下:
clf = LogisticRegression(penalty='none') # 初始化逻辑回归模型
clf.fit(X_train[:,select_fetures_idx],y_train) # 用数据训练逻辑回归模型在sklearn中,默认是加入L2正则项的,它可以避免系数过大,但同时会轻微影响模型的精度,因此训练时可先将penalty选项设为'none'(即不进行正则),如果训练的系数不合理,再改用'l2'训练。
这也是为什么需要将数据归一化的原理之一,因为如果选用L2正则化,而数据不归一化,那么对系数的惩罚就不公平,所以需要将数据归一化,这样L2正则惩罚各个系数时才会更公平、合理一些。
模型训练完成,在sklearn中可以使用clf.coef_、clf.intercept_提取出模型的权重和阈值。
本例中提取的权重和阈值如下:

但由于训练前对数据作了归一化,所以直接提取的权重、阈值是面向归一化后的woe数据的,不妨对它进行反归一化,从而得到面向原始woe数据的权重、阈值:

备注:怎么将逻辑回归的权重阈值反归一化可直接参考后续的代码,原理则可参考文章《》
最终得到模型的表达式为:
比较需要注意的是,这里的变量rev、due30等等,指的都是woe值哦,而不是最原始的数据。
逻辑回归的模型的效果一般使用AUC指标(或KS指标)进行评估,分别计算训练样本和测试样本的AUC,然后根据AUC进行评估模型是否可投产。AUC和投产的关系一般如下:

AUC>0.63:模型对y有区分度(不可投产)。
AUC>0.68:模型在生产上开始效益(不可投产)。
AUC>0.73:模型才算优秀(可投产)。
这是风控中的经验之谈,背后则是由小贷业务中的坏账成本所决定的,也就是auc0.68时,虽然模型能区分出一些坏客户,但区分度不足,坏客户带来的损失覆盖不住好客户的收益,所以一般不可投产。
除了评估AUC,还需要检验模型的系数是否符合业务逻辑。
1. 检查系数符号的合理性
由于经过WOE转换,所有特征与badRate都是正相关,因此,系数应都为正数,如果其中某些变量的系数为负数,需要检验模型哪里出了问题。
2. 检查系数在业务的合理性
除了系数的符号,还应留意模型的系数与业务理解有没有太大的出入,例如,某个变量的系数远远大于其它变量的系数,那也是是不正常的。
如果模型AUC过低,或系数异常,则需要返回排查问题,思考原因,这不在本文范畴,有时间再开文详述。
好了,评分卡的建模到这里就完成了~下张文章我们再讲解如何将模型制作成评分卡。
总的来说,评分卡的建模使用的是WOE数据,在训练之前需要先对数据进行归一化,并用逐步回归来挑选变量,然后再用逻辑回归训练就可以了,训练完后打印出AUC和模型参数等、并检查系数的合理性。
评论