手把手系列|风控建模中共线性的影响和处理(上)

序言:
所谓的多重共线性是指一些自变量之间存在较强的线性关系。这种情况在实际应用中非常普遍,如研究高血压与年龄、吸烟年限、饮白酒年限等因素的关系,这些自变量通常是相关的。
如果当我们发现有多个变量存在线性相关的时候,我们就称为多重共线性。

回归中的多重共线性是一个当模型中一些预测变量与其他预测变量相关时发生的条件。
严重的多重共线性可能会产生问题,因为它可以增大回归系数的方差,使它们变得不稳定。
即使预测变量和响应之间存在显著关系,系数也可能看起来并不显著。要度量多重共线性,可以检查预测变量的相关性结构,比如您也可以查看模型中回归系数的方差膨胀因子 (VIF):
如果所有 VIF 都为 1,则不存在多重共线性,但如果有些 VIF 大于 1,则预测变量为相关;
VIF 大于 5 时,该项的回归系数的估计结果不理想。

今天我们综合了星球同学的一些需求,给大家梳理了这样一篇关于共线性的文章,希望对所有的风控人员在模型共线性的处理上都有所启发。
本文,我们会跟大家介绍多重共线性的内容,包括其中的重点问题跟注意的细节。

因为完整内容较长,本次整体的内容将分成五大部分跟大家介绍,特别是第五部分,内容更会带领大家领略整个模型调参的内容,整体目录如下:
PART 1.共线性对于LR的影响
PART 2.LR建模时对共线性的处理
PART 3.共线性对于集成算法的影响
PART 4.集成算法建模时对共线性的处理
PART 5.实操—利用python做共线性的可视化和筛选
此外关于多重共线性的筛选,在知识星球中更会手把手讲解具体的实操内容,包括数据展示(excel)、数据案例跟代码(python),基本一看就懂,一跑就会。

正文部分如下:
Part1.共线性对于LR的影响
对于模型结果,我们主要关注三个方面:
一是模型的精度偏差(AUC,KS);
二是模型的稳定性/鲁棒性;
三是模型的可解释性;
共线性对于模型的影响将从这三方面来阐述。

1.对LR精度偏差上的影响
我们先看一下LR的梯度W的更新公式:
W
=W-alphadata_matrix.transpose()error
其中alpha是学习率,data_matrix.transpose()为原始数据矩阵,error为真实值和预测值的偏差,可以看到只要模型最后能够收敛,共线性对于LR损失函数的最优化没影响,所以对于精度没什么影响。但这个结果的前提是原始数据不存在什么噪声,我们都知道LR对于噪声比较敏感,实际情况中会一些特征存在噪声,假如有A,B,C三个相关性高的特征,三个特征受到噪声干扰的概率都为10%,如果只挑选其中一个入模,则模型受噪声干扰的概率为10%,如果三个都入模,则受到噪声的概率可以假设为1-0.9
0.9
0.9=27.1%,所以入模比较多的共线性特征会增加模型受到噪声干扰的概率,从而影响模型的精度,但从实验结果看,这种影响程度是比较低的,能在接受范围内。

2.对LR稳定性/鲁棒性的影响
共线性特征太多会增加噪声干扰,也会增加特征维度,结果表现为训练集和验证集的效果有明显差距,过拟合风险增加,或者在OOT的时间跨度上精度不稳定。所以对模型的稳定性,健壮性有一定的影响。

3.对LR解释性的影响
1)共线性会使特征的系数符号出现与实际相反的情况,例如某个特征的系数实际为正数,算出来为负数,举个例子:
假设原始的线性回归公式为:y = w1x1+w2x2+w3x3,w1-w3为系数,x1-x3为特征
模型训练完后得出系数:y = 3x1+5x2+8x3
这时候加入一个新特征x4,x3与x4高度线性相关,x4=2x3
那回归公式变为:y = w1
x1+w2x2+w3x3+w4x4–>y= w1x1+w2x2+(w3+2w4)x3
此时w3+2w4可以合并成一个新的系数w5,
因为相关性对精度没啥影响,则y = w1
x1+w2
x2+w3x3 和 y = w1x1+w2x2+w5x3是等价的,之前得出的y =3x1+5x2+8x3是最优模型,但是引入了x4,w4和w3的权重是分开计算出来的,这样w5=10=w3+2w4,如果方程的解为w3=-2,w4=6,x3的系数符号就变成负数了,这样就会影响x3的可解释性,另外由于w3和w4有无数多的解,使特征系数值的方差增大,模型每次训练得到的系数差异比较大,更加影响模型的解释性。
2)共线性对系数值的影响还会导致本应该显著的特征不显著,本应该不显著的特征呈现显著性,无法从P值的大小来判断显著性,对LR的训练过程和变量筛选造成很大影响。

Part2.LR建模时对共线性的处理
可以发现共线性对LR的最大影响是解释性,由于风控建模中的LR模型非常注重可解释性,所以必须要做特征筛选,去除共线性高的特征。
1.共线性筛选的角度和注意点
1)筛选的特征类型为连续型的数值特征
2)可根据皮尔逊相关系数和方差膨胀系数(vif)来判断是否存在高相关性;
皮尔逊相关系数的取值在0-1之间,一般认为0.65或者0.7以上为高度相关,vif>5或>10认为存在高度的多重共线性,两个系数可以选择其一,或者结合使用来做筛选,筛选的最终要求是特征系数值的符号一致;
3)由于风控场景的LR建模会做woe转换,所以要先把特征原始值映射成woe后,再计算相关系数或VIF;

2.特征筛选的方法
假设A和B两个特征存在共线性,那要剔除哪个呢?一般来说要基于特征的区分能力,也就是IV值大小。若A的IV比B大,则保留A,删除B。另外如果特征很多,特征之间的关系比较复杂,那怎么筛选比较简单高效呢?这就是下面要介绍的三种方法:前向选择,后向选择,双向选择
1)前向选择:将特征按IV值从大到小进行排序,先计算排名前两个的相关系数,若为高相关,则剔除IV值较小的那一个,然后逐步加入特征,每加入一个,就要判断新加入的和其他特征是否存在高度相关,直到所有特征都加完为止;
2)后向选择:先计算全部特征的相关系数,将高相关的特征挑出来并按IV值从小到大进行排序,先剔除IV最小的那一个,然后再计算一遍相关性,依此进行剔除,每剔除一个就判断剩下特征是否存在共线性,如果不存在,则循环停止;
3)双向选择:在LR中也叫做逐步回归,实现过程就是先做前向选择,每次做完一轮前向选择后马上做后向选择,一直到结束。或者先做后向选择,然后做前向选择,在被剔除的特征中选择最好的加回来看效果,这种方法虽然兼顾了前向和后向的优点,但比较耗费时间。

Part3.共线性对于集成算法的影响
1.对集成算法精度偏差上的影响
风控中集成算法主要用的是随机森林,xgboost,lightgbm,catboost这几种,都是以决策树为基模型。决策树对共线性是不敏感的,这是由于在构建树的过程中,采用贪婪算法做特征选择,只有新特征的信息增益比较大才会加入到模型中,所以共线性高的特征中可能只有一个会被选择,集成算法中每一棵树的构建都是贪婪的,就算特征之间共线性很高也只选择部分特征进入到模型中,所以对精度没有影响,这个结论是针对共线性特征较少的情况。
如果共线性特征过多,尤其是那种暴力衍生的方式生成很多相关性高的特征,导致模型训练中重复采样相关性高的特征,这样集成模型追求每个基模型的“好而不同”就会减弱,基模型之间的多样性降低,进而影响模型的效果。
2.对集成算法稳定性/鲁棒性的影响
共线性特征比较多就会引入更多的噪声,对于比较巨大的数据集,大量的样本能很好稀释掉特征空间引入新特征发生的变化,并且决策树对噪声也不敏感。但对于小数据集,这些噪声就会对模型的稳定性和鲁棒性有影响,例如相关特征的噪声数据可能恰好适合某些特定组合的分割选择,但噪声产生的分支对于未来数据预测有很大的偏差。3.对集成算法可解释性的影响
在做特征重要性筛选时,共线性会使特征的重要性被稀释,例如特征A的重要性为50,现在加入跟它强相关性的特征B,C,训练每一棵树时,模型都从这3个里随机选择一个来分裂,选完了一个之后,另外两个由于相关性高的问题,在下一次分裂时不能带来大的信息增益了,因为已经被选中的特征抢先分裂了,所以造成最终3个特征的分裂次数(重要性)都比较小,这时候特征A的重要性可能只有20了。这种情况不仅使按重要性筛选失去真实性,也会影响模型的解释性,本来特征A的重要性排名前几,现在因为共线性排名在中间,这样就没法解释特征A对模型有比较大的贡献。

Part4.集成算法建模时对共线性的处理
1)不做处理。相比于LR,共线性对于集成模型的影响相对要小,并且集成模型对于解释性要求不高。如果共线性特征不是很多,且样本量比较大,可以不做处理。笔者在实际应用中也发现共线性筛选如果筛的太多,模型精度会明显下降,这时候就得优先考虑精度影响了。
2)根据IV值做筛选,由于共线性会影响特征重要性的值,所以要选择IV作为评估指标,筛选方法也是用前向/后向/逐步选择,这种情况适用于特征维度很多或者样本量比较少,做共线性筛选一方面通过降维来减小模型复杂度,也可以降低噪声的影响。
以上就是我们对于共线性问题的探讨,对于共线性特征的处理要根据使用的算法,样本量,特征维度,时间成本来综合考虑,下面总结下共线性筛选的好处:
1)可以显著提高模型训练的速度,共线性特征很多的话,就算损失函数收敛了,但可能参数没有收敛,这样会拉低训练速度。
2)可以提高模型的可解释性,尤其对于LR模型非常重要。
3)减弱噪声对模型的影响,提高模型的稳定性和鲁棒性。
4)通过降维来降低发生过拟合的风险,以及其他未知的风险因素。

Part5.实操—利用python做共线性的可视化和筛选
关于本次内容

1.导入样本,样本有5000条数据,30个特征(var_1–var_30)。
在这里插入图片描述
2.两两相关性的可视化,用pandas的corr()函数计算出两两特征之间的相关系数,然后通过seaborn的heatmap函数绘制相关性热力矩阵图。
在这里插入图片描述

…此处省略部分,请到知识星球参考完整详版内容~
在这里插入图片描述
以上完整版本内容欢迎星球同学移步到知识星球查收完整内容:
在这里插入图片描述
其中本文相关的数据集跟代码也欢迎参考本周2022年2月21日的【星球打榜作业】
在这里插入图片描述

~原创文章

end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值