解决风控模型的过拟合与算法高效求解,来试试这种经典解决方法

正则化,一个熟悉而又陌生的概念,熟悉的是这个名称在建模场景中经常遇到,陌生的是只知其然而不知所以然。当然,对于从事建模的小伙伴来讲,如果模型经验尚未积累到一定程度,在相关模型场景能够理解正则化的作用是可以满足任务需求的,但是若进一步解释参数的含义与逻辑,或者是进一步熟练用好正则化并发挥其更大价值,才是我们模型开发人员需要特别注意的。此外,即使是对于刚跨入数据建模领域的童鞋,了解并熟悉正则化这个名称小而作用大的概念,是工作中非常有必要了解的。本文将为大家总结下正则化的原理思想,同时重点介绍下正则化应用的具体场景及其实现效果。

1、正则化背景介绍
在正式描述正则化的概念之前,我们先来温习下在python环境中通过机器学习库sklearn库调用逻辑回归模型算法LogisticRegression的过程,具体如图1所示,这是我们经常建模的小伙伴来说是非常熟悉的场景。
在这里插入图片描述
图1 逻辑回归算法

从上图逻辑回归LogisticRegression的内置参数信息可以看出,正则化(惩罚项)penalty=‘l2’,说明在熟悉的机器学习sklearn库中,应用广泛的逻辑回归模型是默认L2正则化处理的,从这里这可以了解到,正则化对于逻辑回归模型训练拟合过程的特殊价值,参数默认值必然是非常有效的且重要的。

正则化(regularization),也可以称为惩罚项(penalty),本质上是在模型的损失函数中附加了一个正则化项。具体方程表示如下所示:
在这里插入图片描述

其中,Loss表示损失函数,R为正则化项,λ为正则化系数。
一般情况下,正则化项是关于模型参数的1范数或2范数,也就是常见的L1正则化与L2正则化。在某些场景下,正则化的应用并不是单一的L1或L2,而是二者的有效结合,例如逻辑回归模型的弹性网正则化项。此外,在线性回归模型中,损失函数加上模型系数ω的L1正则化,便是我们比较熟悉的Lasso套索回归;而加上模型系数ω的L2正则化,便是我们比较熟悉的Ridge岭回归。
对于线性回归、逻辑回归等广义线性模型,引入正则化的作用可以概括为两点,一是可以有效缓解模型过拟合的趋势,二是可以使模型损失函数的求解过程更为高效,尤其是前者,是我们实际建模中特别关注的内容,也是希望正则化解决的主要问题。接下来我们便结合具体数据样例,采用逻辑回归模型,来分析下模型引入L1、L2正则化项对模型拟合效果的优化程度。

2、样本数据构建
为了有效说明L1正则化与L2正则化对线性模型过拟合的抑制作用,我们先来构造一个过拟合较明显的线性回归模型。样本数据首先通过随机方式生成,初始值包含10条样本1个特征x,取值范围为0~1,目标变量y在其基础上进一步随机生成,取值类型为连续型,可以满足线性回归的标签需求;然后根据原始特征x来衍生加工新的特征变量池,这里采用多项式方法来实现,具体是通过sklearn.preprocessing库中的 PolynomialFeatures()函数来完成,以上构造实例样本数据的过程如图2所示。
在这里插入图片描述
图2 样本数据构建

通过以上方式得到的建模样本数据df_xs,具体分布如图3所示,其中特征衍生的多项式自由度degree定义为10,取值越大则生成的新特征数量越多,可以结合场景需求自由配置。
在这里插入图片描述
图3 实例样本数据

根据以上样本数据,我们来构建线性回归模型LinearRegression,模型参数均取默认值,模型训练拟合的特征数据为df_xs,目标数据为df_y。当模型训练完成后,通过coef_输出模型变量的权重系数,以了解各模型字段的贡献情况。同时,为了评估模型的拟合效果,通过均方误差(mean_squared_error,简称MSE)来评价模型性能,取值越小说明模型的拟合程度越好。此外,我们通过可视化图表方式,将模型拟合曲线的分布效果在原始数据上进行展示。模型训练、模型评估及其模型展示的具体过程如图4所示,输出的模型变量系数与模型评估指标MSE如图5所示,模型曲线可视化效果如图6所示。
在这里插入图片描述
图4 线性回归模型实现


在这里插入图片描述

                                             图5 线性回归模型参数


在这里插入图片描述
图6 线性回归模型效果

由以上线性回归模型的结果可知,模型的拟合效果很好,模型误差指标MSE很小,仅有3.32316951848339e-24,从模型曲线也能体现出模型拟合是已达到很高程度的。但是,我们需要明确,模型效果的好坏不能单看模型的学习能力,虽然以上模型结果的误差很小,但模型拟合曲线并不平滑,过分学习训练样本数据的信息所致,若此模型应用于新的测试数据,必然会表现出模型的泛化能力很弱,这样的情况便是我们常遇到的模型过拟合现象。
针对模型过拟合情况,在实际业务场景中解决的方法也有很多,其中正则化是其中一种特别有效的方式,下面我们采用L1正则化与L2正则化来验证下对模型过拟合抑制的实现效果。

3、L1正则化模型应用
前边已有介绍,针对线性回归模型,L1正则化可以通过Lasso套索回归来实现,可以通过sklearn.linear_model库直接来调用Lasso。同时,我们对正则化的惩罚系数设置为0.001。为了与L1正则化前的模型效果进行对比,我们采用上文线性回归模型的分析步骤来同理实现,包括模型训练、模型评估及其模型展示环节,具体过程如图7所示,输出的Lasso回归模型的变量系数与评估指标MSE如图8所示,模型曲线可视化效果如图9所示。
在这里插入图片描述
图7 Lasso回归模型实现


在这里插入图片描述
图8 Lasso回归模型参数

在这里插入图片描述

                                                  图9 Lasso与Lnr模型对比

通过图7的Lasso回归模型结果可知,模型指标MSE(0.0046)相比前边Lnr模型的结果(3.3232e-24)明显增大,说明L1正则化对原模型的过分拟合程度有显著的抑制作用。同时,这个结论从图8的Lasso模型拟合曲线也可以看出效果,Lasso模型函数的曲线分布相比原Lnr线性回归模型更为平滑,这在模型测试中必然也会表现出相比L1正则化之前更好的泛化能力。
但是,我们从图7的Lasso回归模型的变量参数可以发现,很多变量的权重系数值都变为0,说明这些特征贡献度很低,这也是L1正则化的特性,在模型拟合训练过程中会较大程度保留对模型信息贡献度较高的变量,而且正则化的惩罚系数越大,模型特征数量在一定范围内会逐渐减少。虽然这个过程有效发挥了对模型过拟合的抑制效果,但是对模型变量的聚合并没有很好的作用,假设最后模型只剩余一个特征变量,显然并不是实际业务所希望的。因此,针对L1正则化的应用,我们往往会将其应用到特征变量的筛选场景,毕竟其效果是比较好的。当然,本文通过实例重点是为了分析描述L1正则化对模型拟合程度的效果,而对于相关场景的应用可以围绕此例进一步扩展与验证。

4、L2正则化模型应用
对于线性回归模型,L2正则化可以通过Ridge岭回归来实现,这里同样可以通过sklearn.linear_model库来直接调用Ridge。这里为了与前边Lasso回归进行对比,模型正则化的惩罚系数也设置为0.001,而且其他分析环节均保持一致,具体过程如图10所示,输出的Ridge回归模型的变量系数与评估指标MSE如图11所示,模型曲线可视化效果如图12所示。
在这里插入图片描述
图10 Ridge回归模型实现

在这里插入图片描述
图11 Ridge回归模型参数


在这里插入图片描述

                                                        图12 Ridge与Lnr模型对比

通过图10的Ridge回归模型结果可知,模型指标MSE(0.0023)相比前边Lnr模型的结果(3.3232e-24)也明显增大,说明L2正则化对原模型的过分拟合程度也有显著的抑制作用。同时,这个结论从图10的Ridge模型拟合曲线也可以看出效果,Ridge模型函数的曲线分布相比原Lnr线性回归模型较为平滑,反映了模型的泛化能力相对更好。
同时,我们从图11的Ridge回归模型的变量参数可以很直观了解到,L2正则化后的模型变量系数仍然保持均匀,并没有像L1正则化结果那样有很多变量系数归0,这便是L2正则化的优势,虽然在正则化相同惩罚系数的情况下,对模型过拟合的抑制程度没有L1正则化那样更强,但可以在有效降低模型过拟合程度的同时,还可以较好的保持各模型变量的有效性,至于特征信息的贡献度仍然可以通过权重系数值大小来判断。因此,在采用正则化方法来缓解模型过拟合程度时,我们往往通过L2正则化的方式来实现。
在采用L2正则化来降低模型过拟合程度的场景下,若希望提高对模型的抑制效果,可以通过提高惩罚系数alpha来完成,在一定取值范围内,能够明显提升正则化的效果,大家可以去尝试,这里暂不详细描述,本文附带代码有相关分析过程。
综合以上内容,我们从正则化的概念入手,详细介绍了L1正则化与L2正则化在模型有效降低模型过拟合程度的实现效果,并对比描述了二者的特点性能与应用场景。为了便于大家对L1、L2正则化的进一步了解与熟悉,本文额外附带了与以上内容同步的python代码与样本数据,供大家参考学习,详情请移至知识星球查看相关内容。
在这里插入图片描述

~原创文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值