评分卡

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

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



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



  前文提要与本文概述  


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





    01.  评分卡建模-预处理    



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





      评分卡建模-数据预处理      


评分卡使用逻辑回归模型进行建模,即使用上述的变量表(woe值)来预测"是坏样本"的概率
 为了获得更好的建模效果,在建模前需要将数据进行以下处理:
 1. 数据归一化                                                                                                  
 
数据归一化是指将数据归一化到[0,1]之间                                                  
 归一化可以让模型求解效果更好,同时在正则惩罚时能公平地惩罚各个变量
 
归一化公式如下:                                                                                    
                   
 
以特征rev为例,它的最小取值、最大取值为-1.5056和2.7689,          
因此,对rev变量进行归一化的计算公式如下:                        

                     
 2. 预留测试数据                                                                                               
预留测试数据,用于测试模型的预测效果                                                 
 一般用80%的数据用于训练模型,预留20%的数据用于模型测试            




       评分卡建模-变量预筛选       


逻辑回归过拟合的原因主要来源于变量个数过多
因此,在保障模型效果的同时,选择尽量少的变量进行建模,可以令模型更不易于过拟合

在评分卡中,一般使用逐步回归的来预筛选变量,减少入模变量个数
  什么是逐步回归  
 逐步回归是挑选模型关键变量的一个常用的方法
简单来说,就是以逐个添加变量的方式进行建模,直到添加变量不能提升模型为止
  逐步回归流程如下: 
 
1. 历遍所有变量,将单个变量与y进行建模,把建模结果最好的变量作为第一轮选择变
2. 在第一轮选择变量的基础上,添加第二个变量,                                                    
历遍剩余变量,添加哪个变量能令模型结果最好,就将其作为第二轮选择变量    
3. 在第二轮的基础上,添加第三个变量......                                                                
......
直到变量不再对拟合结果带来明显贡献时,就不再添加变量
  逐步回归筛选变量的过程如下:
 

 可以看到,在加入第6个变量,marital时,AUC增长并不明显,则停止继续添加变量
只使用前5轮挑出的变量:rev,due30,due90,city,due60







   02. 评分卡建模-模型训练与评估   




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




     评分卡-模型训练    


逻辑回归模型的训练
逻辑回归模型的训练较为简单,只需将选出的变量,放到逻辑回归模型中建模即可
 在python中只需使用sklearn的LogisticRegression就可以训练一个逻辑回归模型
逻辑回归模型可调参数较少,在这一步直接调用模型进行训练即可
代码示例如下:
         clf =LogisticRegression(penalty='none')                        
         clf.fit(X_train[:,select_fetures_idx],y_train)                       

 在sklearn中,默认是加入L2正则项的,它可以避免系数过大,但同时会轻微影响模型的精度
因此训练时可先将penalty选项设为'none'(即不进行正则),如果训练的系数不合理,再改用'l2'训练
   提取模型的权重阈值   
模型训练完成,在sklearn中可以使用clf.coef_、clf.intercept_提取出模型的权重和阈值
 本例中提取的权重和阈值如下:
 
但由于训练前对数据作了归一化,所以直接提取的权重、阈值是面向归一化后的woe数据的
 不妨对它进行反归一化,从而得到面向原始woe数据的权重、阈值:
 
 备注:将逻辑回归的权重阈值进行反归一化的方法可参考文章《》
 最终得到模型的表达式为:
 





     评分卡建模后的模型评估     


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

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






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








 End 




联系老饼