【机器学习笔记】:解读正则化,LASSO回归,岭回归

还没关注?

640?wx_fmt=png

快动动手指!


作者:xiaoyu

知乎:https://zhuanlan.zhihu.com/pypcfx

介绍:一个半路转行的数据挖掘工程师



在机器学习的学习过程中,我们会经常听到正则化这个词,在开始入门学习的时候还经常与标准化混淆。到底什么是正则化呢?本篇我们将由浅入深详细解读什么是正则化,以及LASSO回归岭回归的介绍。


在正式开始之前,我们先了解几个相关基本概念。


什么是过拟合?


对于一组给定的数据,我们需要通过机器学习算法去拟合得到一个模型(对应图中曲线)。根据我们对拟合的控制和调整,这个模型可以有无数多种(一条直线,或各种形状的曲线等)。这么多种当中,哪一种是我们想要的最优结果呢?哪一种最好呢?


640?wx_fmt=gif


我们评判模型好坏的标准是:不但对于训练的数据集有很好的拟合效果,而且对于未知的新的数据(测试集)也同样拥有好的效果,即拥有好的泛化能力。


如果我们的模型过度地学习并拟合了数据,那么就会连一些噪音数据也一起学习(上图中比较复杂的曲线)。但事实上数据在一定范围内是随机的,我们无法预知未知数据长什么样,而且它在很大概率上也不会和训练数据一模一样,因此如果过分地的学习就会导致模型缺少泛化能力,即过拟合。


如何判断一个结果是否发生了过拟合现象呢?


640?wx_fmt=png


如上图迭代次数的增加,训练集和测试集的损失逐渐有越来越大的差距,这就表明发生了过拟合。


过拟合肯定不是我们想要的结果,因此需要使用一些方法来尽量避免过拟合的发生。比如常见的过拟合处理方法有:


  • 增加数据量

  • 简化模型

  • 交叉验证

  • 正则化

  • ...


下面就来说说正则化,一种用来避免过拟合的好方法。


什么是正则化?


正则化就是通过对模型参数进行调整(数量和大小),降低模型的复杂度,以达到可以避免过拟合的效果。正则化是机器学习中的一种叫法,其它领域内叫法各不相同:


机器学习把L1和L2叫正则化,统计学领域叫惩罚项,数学领域叫范数


如果不加入正则化,我们的目标是最小化损失函数,即经验风险最小化

640?wx_fmt=png

加入正则化以后,不再是最小化损失函数了,而是变成以最小化损失复杂度为目标了,这个称为结构风险最小化

640?wx_fmt=png

现在,我们的训练优化算法是一个由两项内容组成的函数:一个是损失项,用于衡量模型与数据的拟合度,另一个是正则化项,用于衡量模型复杂度。


举一个已经分享过的内容为例,多元线性回归模型:

【机器学习笔记】:大话线性回归(一)

【机器学习笔记】:大话线性回归(二)

【机器学习笔记】:大话线性回归(三)


多元线性回归的损失函数是离差平方和的形式,即最小二乘估计,公式如下:

640?wx_fmt=png

如果我们想通过正则化降低模型复杂度,可以在损失函数的基础上线性添加一个正则化项,这样就得到了一个新的结构风险函数,如下:

640?wx_fmt=png

这里我们就添加了一个L2正则化项。先不讨论这个正则化项的类型,我们可以直观看到:在所有参数平方和前乘以了一个参数λ,把它叫正则化系数或者惩罚系数。这个惩罚系数是调节模型好坏的关键参数,我们通过两个极端的情况说明它是如何调节模型复杂度的。


  • λ值为0:损失函数将与原来损失函数一样(即最小二乘估计形式),说明对参数权重β没有任何惩罚。

  • λ为无穷大:在惩罚系数λ无穷大的情况下,为保证整个结构风险函数最小化,只能通过最小化所有权重系数β达到目的了,即通过λ的惩罚降低了参数的权重值,而在降低参数权重值的同时我们就实现了降低模型复杂度的效果。


当然,具体的惩罚程度还需要调节λ值来达到一个平衡的点,过度的惩罚会让模型出现欠拟合的情况。了解正则化项后,下面我来接着看一下这个惩罚项都可以是哪些类型。


正则化有哪些类型?


常用的正则化有两种L1L2。如果了解KNN算法和聚类算法的都知道有两个常用的距离概念,曼哈顿距离和欧式距离,它们与正则化的对应关系是这样的:


  • L1:曼哈顿距离(参数绝对求和)

  • L2:欧氏距离(参数平方值求和)


在回归模型中,我们一般把的带有L1正则化项的回归模型叫做LASSO回归,而把带有L2正则化项的回归叫做岭回归。这里我们直接给出两种多元线性回归正则化的公式:

640?wx_fmt=png

多元线性回归 L1正则化:Lasso回归


640?wx_fmt=png

多元线性回归 L2正则化:Ridge回归


下面我们分别介绍一下LASSO回归和岭回归,然后对比L1和L2正则化的区别。


L2正则化:岭回归


岭回归的提出


我们在之前通过最小二乘法推导出多元线性回归的求解公式:

640?wx_fmt=png

这个公式有一个问题:X不能为奇异矩阵,否则无法求解矩阵的逆。岭回归的提出恰好可以很好的解决这个问题,它的思路是:在原先的β的最小二乘估计中加一个小扰动λI,这样就可以保证矩阵的逆可以求解,使得问题稳定。公式如下:

640?wx_fmt=png

这个公式我们可以通过对上一节的结构化风险函数求偏导推出来,具体推导不进行展示了。


岭回归的几何意义


既然我们想最小化结构风险函数,那么我们可以通过限制其中的正则项来达到目的,因此可以将原来的结构风险函数变成另一种问题形式。

640?wx_fmt=png

上式是对 β 的平方和做数值上界限定,即所有β 的平方和不超过参数 t。这时候,我们相当于拆分了原来的结构化分险函数,目标就转换为:最小化原来的训练样本误差,但是要遵循 β 平方和小于 t 的条件。


以两个变量为例,通过图形来解释岭回归的几何意义,最小二乘解就相当于一个漏斗型,通过求解找到最小值。


640?wx_fmt=jpeg

最小二乘求解:经验风险最小化


在原来的最小二乘求解基础上,加入下面的正则化的约束(几何图形中相当于一个圆柱体)。

640?wx_fmt=png

640?wx_fmt=jpeg

岭回归:结构风险最小化


公式中的 t λ 是成反比的,也就是说t越小,惩罚程度越大,与sklearn中的正则化参数定义是一样的。


因此,如果我们减小t,圆柱体就会向内缩,导致与漏斗的交点向上移动,而向上移动的同时 β1 β2 的值也在减小,即达到了降低参数权重的效果。但是随着向上移动,结构化风险函数的值也越来越大了,趋于欠拟合的方向,这也就揭示了为什么说要选择一个合适的惩罚系数了。


L1正则化:LASSO回归


LASSO回归形式上与岭回归非常相似,只是将平方换成了绝对值。

640?wx_fmt=png

LASSO回归正则项的几何形式不再是一个圆柱体,而变为一个长方体了,这也是导致两种回归关于是否稀疏的根本原因。


L1和L2正则化有什么相同和不同?


1. 有偏估计


我们将前面的三维立体图形映射成二维(从上往下看),可以清晰地看到:求解的交点不再是最小二乘的最小值(红点),而变成了与正则项的交点(黄点)。这说明了LASSO回归和岭回归都是一种有偏估计,而最小二乘是一种无偏估计。

640?wx_fmt=png

2. 能否使参数矩阵稀疏


前面我们说正则化是通过调整模型参数(数量和大小)来降低模型复杂度的,其实,这里说的数量大小是和L1和L2正则化分别有着对应关系的。


  • L1正则化:通过稀疏化(减少参数数量)降低模型复杂度的,即可以将参数值减小到0。

  • L2正则化:通过减少参数值大小来降低模型复杂的,即只能将参数值不断减小但永远不会减小到0。


这个区别可以从二维图中更好地观察出来:岭回归中两个图形(没有棱角)的交点永远不会落在两个轴上,而LASSO回归中,正则化的几何图形是有棱角的,可以很好的让交点落在某一个轴上。

640?wx_fmt=png

这种稀疏化的不同也导致了LASSO回归可以用于特征选择(让特征权重变为0从而筛选掉特征),而岭回归却不行。但是两种回归的效果还需要根据实际情况来选择,以及如何选择惩罚系数。关于稀疏化很有多内容,这里不进行展开。


3. 下降速度不同


两种回归的不同也可以反映在下降速度上,蓝色为岭回归的最小化下降曲线,红色为LASSO回归的下降曲线。


640?wx_fmt=png

可以发现:最开始的时候岭回归下降的非常快,但是随着值越来越小,岭回归下降速度也越来越慢,当快接近0的时候,速度会非常慢,即很难减小到0。相反,LASSO回归是以恒定的速度下降的,相比于岭回归更稳定,下降值越接近近0时,下降速度越快,最后可以减小到0。


下面是一组岭回归和LASSO回归的特征系数随着模型不断迭代而变化的动态展示。

640?wx_fmt=gif



其它正则化类型?


L1和L2只是比较常用的范数,如果推广到一般的话,可以有非常多种的正则化。

640?wx_fmt=png

q可是是很多值


640?wx_fmt=png


但是由于一些凸优化问题,L1和L2表现出来的效果是最好的,因此也被最常用到。


此外,还有一种介于L1和L2之间的一种正则化叫Elasticnet,像一种弹性网一样,现在被认为是处理多重共线性和变量筛选较好的收缩方法,而且损失的精度不会太多。


总结


本篇由浅入深地介绍了过拟合,正则化,以及LASSO回归和岭回归,希望通过本篇可以让你对正则化有一个清晰的认识,后续会介绍正则化相关编程方面的实战内容,以及如何选择参数,调节参数。


参考:

[1].http://f.dataguru.cn/thread-598486-1-1.html

[2].https://developers.google.com/machine-learning/

[3].https://towardsdatascience.com/

[4].https://blog.csdn.net/lyf52010/article/details/79822144


每天进步一点点:数据分析1480

640?wx_fmt=png

长按扫码关注我

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值