评分卡

【 2 】评分卡实例-逻辑回归建模

作者 : 老饼 发表日期 : 2022-07-08 00:03:39 更新日期 : 2024-06-22 21:27:08
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



接上文《评分卡实例-数据准备



  前文提要与本文概述  


经过上一节的特征工程,我们得到了处理好的评分卡入模变量数据,即如下的评分卡WOE变量表
 评分卡WOE变量表 
 
在本文,我们讲解,如何使用这张WOE变量表的数据建立逻辑回归模型





    01.  评分卡建模-数据预处理    



本节讲解评分卡建模前需要做什么数据处理



   评分卡 建模数据预处理概述   


为了获得更好的建模效果,
在进行建模之前,需要将数据进行以下处理
 👉数据归一化    :目的是让模型求解效果更好
 👉预留测试数据 :目的是避免模型过拟合    




     数据归一化     


归一化的数据能令逻辑回归的求解提供便利,
一般在调用逻辑回归之前,需要将数据进行归一化

 
  归一化公式   
 
归一化是指将数据缩放到[0,1]之间
归一化公式如下
 
✍️  归一化举例说明  
    
以特征rev_grp为例,
它的最小取值、最大取值如下(即上面的woe值)
rev_grp的最大值:2.11168472653793,  
rev_grp的最小值:-1.49519682401574, 

对rev_grp统一作归一化如下:

 
 
 



      预留测试数据     


我们一般需要预留数据用于模型测试,避免模型过拟合
一般来说,可以将建模数据按80%、20%的比例随机分割
将80%的数据用于建模,另外20%数据用于测试




  02. 评分卡建模-挑选的关键变量  



本节讲解如何挑选出评分卡中的关键入模变量



  为什么要选出关键变量  


逻辑回归过拟合的原因主要来源于变量个数过多,如果在保障模型效果的同时,
选择尽量少的变量参与逻辑回归模型,可以令逻辑回归更不易于过拟合
所以,一般来说,我们不直接使用逻辑回归进行建模,
而是先在逻辑回归外套用一层逐步回归,选出对模型贡献较大的关键变量,再用关键变量建模。



   逐步回归  


逐步回归是挑选模型关键变量的一个常用的方法。

   逐步回归流程  
 
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





  03. 评分卡建模-模型训练  



本节讲解评分卡建模时模型的正式训练



  评分卡的模型训练  


将选出的变量,放到逻辑回归模型中建模,
逻辑回归模型训练较为简单,可调参数也较少,在这一步直接调用模型进行训练即可
关键代码如下:
         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数据)的权重和阈值
而不是归一化后数据得到的模型权重阈值哦





   04. 评分卡建模-模型评估   



本节讲解评分卡建模完成后,如何评估模型



     评分卡建模后的模型评估     


评分卡模型的AUC评估
逻辑回归的模型评估一般是使用AUC 
分别计算训练样本和测试样本的AUC,然后根据AUC进行评估模型是否可投产
 AUC和投产的关系一般如下
 👉AUC>0.63:模型对y有区分度(不可投产)    
 👉AUC>0.68:有效益(不可投产)                       
 👉AUC>0.73:模型才算优秀(可投产)           
   评分卡模型的系数审查   
除了评估AUC,还需要检验模型的系数是否符合业务逻辑
  1.检查系数符号的合理性                                                                                           
由于经过WOE转换,所有特征与badRate都是正相关,因此,系数应都为正数
如果为负数,需要检验模型哪里出了问题                                                       
 2. 检查系数在业务的合理性                                                                                     
除了系数的符号,还应留意模型的系数与业务理解有没有太大的出入,           
例如,某个变量的系数远远大于其它变量的系数,那也是是不正常的               

 如果模型AUC过低,或系数异常,则需要返回排查问题,思考原因,这不在本文范畴,有时间再开文详述




评分卡的建模到这里就完成了~ 下张文章我们再讲解如何将模型制作成评分卡






 End 




联系老饼