先引入岭回归的概念:
岭回归(英文名:ridge regression, Tikhonov regularization)是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。
岭回归的原理:
对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这种矩阵称为“病态矩阵”。有些时候不正确的计算方法也会使一个正常的矩阵在运算中表现出病态。 对于高斯消去法来说,如果主元(即对角线上的元素)上的元素很小,在计算时就会表现出病态的特征。 回归分析中常用的最小二乘法是一种无偏估计。对于一个适定问题,X通常是列满秩的
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnaugzM5YmZ3cjM2Q2N4IGO0E2N5ETZ5cTNxQDZihzM3UmMkVWY0QjYiR2LcFWY2EjZxQjMldTNwczM0UGNzEDNmFDOmVDNlNmY3ADM942ZpN3LcBTNENTJz9CXltWahJ2LclHaoZjRIFzSX9GcrdEarRTS491ZhNFZz8mZt8CXt92YuMWa0FGdzRmYuIzczd2Lc9CX6MHc0RHaiojIsJye.jpg)
采用最小二乘法,定义损失函数为残差的平方,最小化损失函数
上述优化问题可以采用梯度下降法进行求解,也可以采用如下公式进行直接求解
当X不是列满秩时,或者某些列之间的线性相关性比较大时,
的行列式接近于0,即
接近于奇异,上述问题变为一个不适定问题,此时,计算
时误差会很大,传统的最小二乘法缺乏稳定性与可靠性。 为了解决上述问题,我们需要将不适定问题转化为适定问题:我们为上述损失函数加上一个正则化项,变为
其中,我们定义
。 于是:
上式中,
是单位矩阵。 随着
的增大,
各元素
的绝对值均趋于不断变小,它们相对于正确值
的偏差也越来越大。
趋于无穷大时,
趋于0。其中,
随
的改变而变化的轨迹,就称为岭迹。实际计算中可选非常多的
值,做出一个岭迹图,看看这个图在取哪个值的时候变稳定了,那就确定
值了。 岭回归是对最小二乘回归的一种补充,它损失了无偏性,来换取高的数值稳定性,从而得到较高的计算精度。
由于直接套用线性回归可能产生过拟合,我们需要加入正则化项,如果加入的是L2正则化项,就是Ridge回归,有时也翻译为脊回归。它和一般线性回归的区别是在损失函数上增加了一个L2正则化的项,和一个调节线性回归项和正则化项权重的系数α。损失函数表达式如下:
J(θ)=12(Xθ−Y)T(Xθ−Y)+12α||θ||22
其中α为常数系数,需要进行调优。||θ||2为L2范数。
Ridge回归的解法和一般线性回归大同小异。如果采用梯度下降法,则每一轮θ迭代的表达式是:
θ=θ−(βXT(Xθ−Y)+αθ)
其中β为步长。
如果用最小二乘法,则θ的结果是:
θ=(XTX+αE)−1XTY
其中E为单位矩阵。
Ridge回归在不抛弃任何一个变量的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但这会使得模型的变量特别多,模型解释性差。有没有折中一点的办法呢?即又可以防止过拟合,同时克服Ridge回归
模型变量多的缺点呢?有,这就是下面说的Lasso回归。
LASSO Regression:
Lasso回归有时也叫做线性回归的L1正则化,和Ridge回归的主要区别就是在正则化项,Ridge回归用的是L2正则化,而Lasso回归用的是L1正则化。Lasso回归的损失函数表达式如下:
J(θ)=12n(Xθ−Y)T(Xθ−Y)+α||θ||1
其中n为样本个数,α为常数系数,需要进行调优。||θ||1为L1范数。
Lasso回归使得一些系数变小,甚至还是一些绝对值较小的系数直接变为0,因此特别适用于参数数目缩减与参数的选择,因而用来估计稀疏参数的线性模型。但是Lasso回归有一个很大的问题,导致我们需要把它单独拎出来讲,就是它的损失函数不是连续可导的,由于L1范数用的是绝对值之和,导致损失函数有不可导的点。也就是说,我们的最小二乘法,梯度下降法,牛顿法与拟牛顿法对它统统失效了。那我们怎么才能求有这个L1范数的损失函数极小值呢?
这是就需要用到两种全新的求极值解法坐标轴下降法(coordinate descent),和最小角回归法(Least Angle Regression,LARS). 用最小角回归法求解Lasso回归的两个预备算法:前向选择(Forward Selection)算法,前向梯度(Forward Stagewise)算法 总结: Lasso回归是在ridge回归的基础上发展起来的。如果模型的特征非常多,需要压缩,那么Lasso回归是很好的选择。一般情况下,普通的线性回归模型就够了。本文对最小角回归法求具体的theta参数值没有提及,仅仅涉及了原理。