从零开始学Python【24】--岭回归及LASSO回归(理论部分)

浏览: 4432

往期回顾

从零开始学Python【20】--线性回归(理论部分)

从零开始学Python【21】--线性回归(实战部分)

从零开始学Python【22】--线性回归诊断(第一部分)

从零开始学Python【23】--线性回归诊断(第二部分)

前言


      在《从零开始学Python【20】--线性回归(理论部分)》一文中我们详细介绍了关于线性回归模型的理论知识,包括模型参数求解的推导、模型的显著性检验、偏回归系数的检验和偏回归系数期望和方差的推导。我们再来回顾一下线性回归模型的偏回归系数的表达式:

image.png

要能保证该回归系数有解,必须确保X’X矩阵是满秩的,即X’X可逆,但在实际的数据当中,自变量之间可能存在高度自相关性,就会导致偏回归系数无解或结果无效。为了能够克服这个问题,可以根据业务知识,将那些高自相关的变量进行删除;或者选用岭回归也能够避免X’X的不可逆。

岭回归


      岭回归一般可以用来解决线性回归模型系数无解的两种情况,一方面是自变量间存在高度多重共线性另一方面则是自变量个数大于等于观测个数。针对这两种情况,我们不妨设计两个矩阵,来计算一下X’X的行列式。

第一种矩阵:第一列和第三列存在两倍关系(即多重共线性)

image.png

第二种矩阵:列数比行数多(非满秩)

image.png

    所以,不管是高度多重共线性的矩阵还是列数多于观测数的矩阵,最终算出来的行列式都等于0或者是近似为0,类似于这样的矩阵,都会导致线性回归模型的偏回归系数无解或解无意义(因为矩阵行列式近似为0时,其逆将偏于无穷大,导致回归系数也被放大)。那如何来解决这个问题呢?1970年Heer提出了岭回归方法,非常巧妙的化解了这个死胡同,即在X’X的基础上加上一个较小的lambda扰动 ,从而使得行列式不再为0。

参数求解


      根据Heer提出的岭回归方法,可以将回归系数的求解表达式写成如下这个式子:

image.png

不难发现,回归系数beta的值将随着lambda的变化而变化,当lambda=0时,其就退化为线性回归模型的系数值。

      实际上,岭回归系数的解

image.png

是依赖于下面这个最优化问题

image.png

其中,最后一项

image.png

被称为目标函数的惩罚函数,是一个L2范数,它可以确保岭回归系数beta值不会变的很大,起到收缩的作用,这个收缩力度就可以通过lambda来平衡。之所以用“平衡”这个词,我们可以通过下面这幅图(源于《机器学习实战》)来描述:

image.png

   这幅图的横坐标是模型的复杂度,纵坐标是模型的预测误差,绿色曲线代表的是模型在训练集上的效果,蓝色曲线代表的是模型在测试集的效果。从预测效果的角度来看,随着模型复杂度的提升,在训练集上的预测效果会越来越好,呈现在绿色曲线上就是预测误差越来越低,但是模型运用到测试集的话,预测误差就会呈现蓝色曲线的变化,先降低后上升(过拟合);从模型方差角度(即回归系数的方差)来看,模型方差会随着复杂度的提升而提升。针对上面这个图而言,我们是希望平衡方差和偏差来选择一个比较理想的模型,对于岭回归来说,随着lambda的增大,模型方差会减小(因为矩阵X’X行列式在增大,其逆就是减小,从而使得岭回归系数在减小)而偏差会增大。故通过lambda来平衡模型的方差和偏差,最终得到比较理想的岭回归系数。

岭回归的几何意义


      上面我们讲解了关于岭回归模型的参数求解,参数解是依赖于一个目标函数,该目标函数还可以表示为:

image.png

     为什么要添加这个岭回归系数平方和的约束呢?我们知道,岭回归模型可以解决多重共线性的麻烦,正是因为多重共线性的原因,才需要添加这个约束。你可能觉得这说的跟绕口令一样,我们举个例子,也许你就能明白了。例如影响一个家庭可支配收入(y)的因素有收入(x1)和支出(x2),可以根据自变量和因变量的关系构造线性模型:

image.png

假如收入(x1)和支出(x2)之间存在高度多重共线性,则两个变量的回归系数之间定会存在相互抵消的作用。即把beta1调整为很大的正数,把beta2调整为很小的负数时,预测出来的y将不会有较大的变化。所以为了压缩beta1和beta2的范围,就需要一个平方和的约束。

      如果把上面的等价目标函数展示到几何图形中的话,将会是(这里以两个变量的回归系数为例):

image.png

其中,半椭圆体表现的是

image.png

这个目标函数(因为目标函数是关于两个系数的二次函数);圆柱体表现的是

image.png

黄色的交点就是满足目标函数下的岭回归系数值。进一步,可以将这个三维的立体图映射到二维平面中,表现的就更加直观了:

image.png

岭回归系数的性质


      如上分享了关于岭回归系数的求解及其直观的几何意义,接下来推导一些关于岭回归系数的几点性质:

  • 岭回归系数是OLS估计的线性变换

image.png

岭回归系数是有偏的

image.png

当lambda>0时,岭回归系数具有压缩性

image.png

  • 存在某个lambda,使得岭回归是优于线性回归的

      由于推导过程过于复杂,会引起部分朋友的不适,这里就不详细写了,如果你对推导比较感兴趣,可以查看万丽颖写的《岭回归分析及其应用》论文,其中有详细的推导过程。该性质说白了就是如下这个结论:

image.png

岭参数的选择


      我们知道岭回归系数会随着lambda的变化而变化,为保证选择出最佳的岭回归系数,该如何确定这个lambda值呢?一般我们会选择定性的可视化方法定量的统计方法。对这种方法作如下说明:

1)绘制不同lambda值与对应的beta值之间的折线图,寻找那个使岭回归系数趋于稳定的lambda值;同时与OLS相比,得到的回归系数更符合实际意义

2)方差膨胀因子法,通过选择最佳的lambda值,使得所有方差膨胀因子不超过10

3)虽然lambda的增大,会导致残差平方和的增加,需要选择一个lambda值,使得残差平方和趋于稳定(即增加幅度细微)。

LASSO回归


      最后我们再来介绍一下LASSO回归,其实该回归与岭回归非常类似,不同的是求解回归系数的目标函数中使用的惩罚函数是L1范数,即

image.png

同理,该目标函数也可以转换成:

image.png

将上面的等价目标函数可以展示到二维几何图形中,效果如下图所示(这里以两个变量的回归系数为例):

image.png

其实,LASSO回归于岭回归只是在惩罚函数部分有所不同,但这个不同却让LASSO明显占了很多优势,例如在变量选择上就比岭回归强悍的多。就以直观的图形为例,LASSO回归的惩罚函数映射到二维空间的话,就会形成“角”,一旦“角”与抛物面相交,就会导致beta1为0(如上图所示),这样beta1对应的变量就是一个可抛弃的变量。但是在岭回归过程中,没有“角”的圆形与抛物面相交,出现岭回归系数为0的概率还是非常小的

结语


      OK,今天关于岭回归和LASSO回归的理论部分就介绍到这里,希望对数据挖掘或机器学习感兴趣的朋友,能够静下心来好好的整理并推导一遍。如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让更多的朋友学习和进步。下一期,我们将运用Python和R语言来实现岭回归和LASSO回归模型的实战,期待大家的交流和关注。

关注“每天进步一点点2015”,与小编同进步

参考:


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

《岭回归分析及其应用》,2016年3月,许昌学院学报,万丽颖



推荐 0
本文由 每天进步一点点2015 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册