Ridge回归、Lasso回归和弹性网回归
目录
在处理较为复杂的数据的回归问题时,普通的线性回归算法通常会出现预测精度不够,如果模型中的特征之间有相关关系,就会增加模型的复杂程度。当数据集中的特征之间有较强的线性相关性时,即特征之间出现严重的多重共线性时,用普通最小二乘法估计模型参数,往往参数估计的方差太大,此时,求解出来的模型就很不稳定。在具体取值上与真值有较大的偏差,有时会出现与实际意义不符的正负号。同时,当样本特征很多,而样本数相对较少时,模型很容易陷入过拟合。此时权重系数就会非常的大。
岭回归与Lasso回归的出现是为了解决线性回归出现的过拟合以及在通过正规方程方法求解\(w\)的过程中出现的\((X^TX)\)不可逆这两类问题的,这两种回归均通过在损失函数中引入正则化项来达到目的。
岭回归最先用来处理特征数多于样本数的情况,现在也用于在估计中加入偏差,从而得到更好的估计。这里通过引入\(\lambda\)限制了所有\(w^2\)之和,通过引入该惩罚项,能够减弱不重要的参数,这个技术在统计学上也叫作缩减(shrinkage)。和岭回归类似,另一个缩减方法LASSO也加入了正则项对回归系数做了限定。
为了防止过拟合(\(w\)过大),在损失函数后添加复杂度惩罚因子,即正则项来防止过拟合。正则项可以使用L1正则化(Lasso)、L2正则化(Ridge),或结合L1和L2正则化(Elastic Net)。
1. Ridge回归
给定数据集\(D=\{(\pmb x_1,y_1),(\pmb x_2,y_2),\dots,(\pmb x_m,y_m)\}\),其中\(\pmb x_i = (x_{i1},x_{i2},\dots,x_{id})\),\(y_i \in R\)。在线性回归模型中,我们以平方误差作为损失函数,则优化目标为
\[\smash{\min_{w}}\sum_{i=1}^m(y_i-w^Tx_i)^2 \tag{1} \]
为了缓解过拟合问题,可以对上式引入正则化项。若使用\(L_2\)范数正则化,则有
\[\smash{\min_{w}}\sum_{i=1}^m(y_i-w^Tx_i)^2 + \lambda \parallel w \parallel^2_2 \tag{2} \]
其中,正则化参数\(\lambda \gt 0\)。\(\lambda\)越大,则为了使\(J(w)\)最小化,系数\(w\)就越小。在线性回归中,式\((2)\)被称为“岭回归”(Ridge regression),通过引入\(L_2\)范数正则化,确能显著降低过拟合的风险。
在学习线性回归模型的时候,我们通过最小二乘法求得模型系数的解析解为
\[w = (X^TX)^{-1}X^Ty \tag{3} \]
同样的,我们可以直接计算得到在加入\(L_2\)正则项时的模型系数:
\[\begin{aligned} J(w) &= (y-Xw)^T(y-Xw) + \lambda w^Tw \\ &=(y^T-w^TX^T)(y-Xw) + \lambda w^Tw\\ &= y^Ty - y^TXw - w^TX^Ty + w^TX^TXw + \lambda w^Tw \end{aligned}\]
令\(\frac{\partial{J(w)}}{\partial w} = 0\)
\[0 - X^Ty-X^Ty-2X^TXw+2 \lambda w = 0 \]
\[w = (X^TX+\lambda I)^{-1}X^Ty \tag{4} \]
单位矩阵\(I\)的对角线上全是1,像一条山岭一样,这也是岭回归名称的由来。
岭回归与线性回归的解析解
在线性回归中,要保证能够求得解析解,必须保证\(\pmb X^T \pmb X\)矩阵是满秩矩阵或正定矩阵,即\(\pmb X^T \pmb X\)可逆。但在实际的数据当中,自变量之间可能存在高度自相关性,或者自变量个数大于等于观测个数,就会导致系数无解或结果无效。为了能够克服这个问题,可以根据业务知识,将那些高自相关的变量进行删除;或者选用岭回归也能够避免\(\pmb X^T \pmb X\)的不可逆。
岭回归一般可以用来解决线性回归模型系数无解的两种情况,一方面是自变量间存在高度多重共线性,另一方面则是自变量个数大于等于观测个数。针对这两种情况,我们不妨设计两个矩阵,来计算一下\(\pmb X^T \pmb X\)的行列式。
第一种矩阵的第一列和低列存在两倍关系,即多重共线性
\[X =\begin{pmatrix} 1 & 2 & 2 \\ 2 & 5 & 4 \\ 2& 3 & 4 \end{pmatrix}\]
\[\begin{aligned}X^TX &= \begin{pmatrix} 1&2&2\\ 2&5&3\\ 2&4&4 \end{pmatrix}\begin{pmatrix} 1 & 2 & 2 \\ 2 & 5 & 4 \\ 2& 3 & 4 \end{pmatrix} \\ &=\begin{pmatrix} 9 & 18 & 18 \\ 18 & 38 & 36 \\ 18& 36 & 36 \end{pmatrix} \end{aligned}\]
计算行列式:\(|X^TX| = 0\)
第二种矩阵的列数比行数多,即非满秩
\[X =\begin{pmatrix} 1 & 2 & 5 \\ 6 & 1 & 3 \end{pmatrix}\]
\[\begin{aligned}X^TX &= \begin{pmatrix} 1 & 6 \\ 2 & 1 \\ 5& 3 \end{pmatrix}\begin{pmatrix} 1&2&5\\ 6&1&3 \end{pmatrix} \\ &=\begin{pmatrix} 37 & 8 & 23 \\ 8 & 5 & 13 \\ 23& 13 & 34 \end{pmatrix} \end{aligned}\]
计算行列式:\(|X^TX| = 0\)
所以,不管是高度多重共线性的矩阵还是列数多于观测数的矩阵,最终算出来的行列式都等于0或者是近似为0,类似于这样的矩阵,都会导致线性回归模型的系数无解或解无意义,因为矩阵行列式近似为0时,其逆将偏于无穷大,导致回归系数也被放大。
岭回归方法非常巧妙的化解了这个问题,即在\(X^TX\)的基础上加上一个较小的\(\lambda\)扰动 ,从而使得行列式不再为0。从令一个角度看,\(X^TX\)是一个半正定矩阵,在加入\(\lambda I\)之后,可以看出\((X^TX+\lambda I)\)是一个正定矩阵。
2. LASSO回归
如果将岭回归中的\(L_2\)范数正则化替换为\(L_1\)范数正则化,则有
\[\smash{\min_{w}}\sum_{i=1}^m(y_i-w^Tx_i)^2 + \lambda \parallel w \parallel_1 \tag{5} \]
其中,正则化参数\(\lambda \gt 0\)。在线性回归中,上式被称为LASSO(Least Absolute Selection Operator)。
那么,模型系数如何求解呢?这个问题由于正则化项在零点处不可求导,所以使用非梯度下降法进行求解,如坐标下降法、近端梯度下降或最小角回归法。
下面将使用坐标下降法进行求解(对于\(d\)维参数的可微凸函数\(J(w)\),如果存在\(\hat w\)使得\(J(w)\)在每个坐标轴上均达到最小值,则\(J(\hat w)\)就是点\(\hat w\)上的全局最小值),控制其他\(d-1\)个参数不变,对目标函数中的某一个\(w_j\)求偏导,以此类推对剩下的\(d-1\)个参数求偏导,最终令每个分量下的导函数为\(0\),得到使目标函数达到全局最小的\(\hat w\)。
首先,我们可以将目标函数写成如下形式:
\[RSS(w)+\lambda \parallel w \parallel_1 = \sum_{i=1}^m(y_i-\sum_{j=1}^d w_jh_j(x_i))^2 + \lambda \sum_{j=1}^d|w_j| \tag{6} \]
其中\(RSS(w)\)表示误差平方和,下面分为两步求解:
1)RSS偏导
\[\begin{aligned} \cfrac{\partial}{\partial w_j}RSS(w) &= -2\sum_{i=1}^mh_j(x_i)(y_i-\sum_{j=1}^d w_jh_j(x_i)) \\ &= -2\sum_{i=1}^mh_j(x_i)(y_i-\sum_{k \ne j}w_kh_k(x_i) - w_jh_j(x_i)) \\ &= -2\sum_{i=1}^mh_j(x_i)(y_i-\sum_{k \ne j}w_kh_k(x_i)) +2w_j\sum_{i=1}^mh_j(x_i)^2 \end{aligned} \tag{7}\]
下面做一下标记化简,令
\[\rho_j = \sum_{i=1}^mh_j(x_i)(y_i-\sum_{k \ne j}w_kh_k(x_i)) \tag{8} \]
\[z_j = \sum_{i=1}^mh_j(x_i)^2 \tag{9} \]
于是将式\((7)\)简化为:
\[\cfrac{\partial}{\partial w_j}RSS(w) = -2\rho_j + 2w_jz_j \tag{10} \]
2)正则项偏导
次梯度方法(subgradient method)是传统的梯度下降方法的拓展,用来处理不可导的凸函数。
定义:凸函数\(f:l\rightarrow R\)在点\(x_0\)的次导数,是实数\(c\)使得\(f(x)-f(x_0) \ge c(x-x_0)\),对于所有\(l\)内的\(x\)。我们可以证明,在点\(x_0\)的次导数的集合是一个非空闭区间\([a,b]\),其中\(a\)和\(b\)是单侧极限,\(a=\lim_{x\rightarrow x_0-}\frac{f(x)-f(x_0)}{x-x_0}\),\(b=\lim_{x\rightarrow x_0+}\frac{f(x)-f(x_0)}{x-x_0}\),它们一定存在,且满足\(a\le b\)。所有次导数的集合\([a,b]\)称为函数\(f\)在\(x_0\)的次微分。
例子:考虑凸函数\(f(x)=|x|\)。在原点的次导数是区间\([-1,1]\)。\(x_0 \lt 0\)时,次导数的单元素集合\(\{-1\}\),而\(x_0 \gt 0\)时,次导数的单元素集合\(\{1\}\)。
所以,我们有
\[\lambda \cfrac{\partial}{\partial w_j}|w_j| = \begin{cases} -\lambda \qquad \quad w_j \lt 0\\ [-\lambda, \lambda] \quad \, w_j = 0\\ \lambda \qquad \qquad w_j \gt 0 \end{cases} \tag{11}\]
3)整体偏导数
\[\begin{aligned} \cfrac{\partial}{\partial w_j}RSS(w) + \lambda \cfrac{\partial}{\partial w_j}|w_j| &= 2z_jw_j-2\rho_j+ \begin{cases} -\lambda \qquad \quad w_j \lt 0\\ [-\lambda, \lambda] \quad \, w_j = 0\\ \lambda \qquad \qquad w_j \gt 0 \end{cases} \\ &= \begin{cases} 2z_jw_j-2\rho_j -\lambda \qquad \quad w_j \lt 0\\ [-2\rho_j-\lambda, -2\rho_j+\lambda] \quad \, w_j = 0\\ 2z_jw_j-2\rho_j+\lambda \qquad \quad w_j \gt 0 \end{cases} \end{aligned} \tag{12}\]
想要获得最优解,令式\((12)\)等于0,解得:
\[\hat w_j = \begin{cases} (\rho_j+\lambda /2)/z_j \qquad \rho_j \lt -\lambda /2 \\ 0 \qquad \qquad \qquad \quad \rho_j \in [-\lambda /2 , \lambda /2] \\ (\rho_j-\lambda /2)/z_j \qquad \rho_j \gt -\lambda /2 \end{cases} \tag{13}\]
3. 弹性网回归(Elastic Net)
Lasso回归虽然大大降低了预测方差,达到了系数收缩和变量选择的目的,但是也有一定的局限性。譬如
- 在Lasso回归求解路径中,对于\(m×d\)的设计矩阵来说,最多只能选出\(min(m,d)\)个变量。当\(d \gt m\)的时候,最多只能选出\(m\)个预测变量。因此,对于\(d∼m\)的情况,Lasso方法不能够很好的选出真实的模型。
- 如果预测变量具有群组效应,则用Lasso回归时,只能选出其中的一个预测变量。
- 对于通常的\(m \gt d\)的情形,如果预测变量中存在很强的共线性,Lasso的预测表现受控于岭回归。
基于以上几点Lasso回归的局限性,Zou和Hastie在2005年提出了弹性网回归方法,优化目标为:
\[\smash{\min_{w}}\sum_{i=1}^m(y_i-\sum_{j=1}^dx_{ij}w_j)^2 + \lambda\sum_{j=1}^d|w_j|+\lambda \sum_{j=1}^dw_j^2 \tag{14} \]
若令\(\lambda = \lambda_1 + \lambda_2, \alpha = \frac{\lambda}{\lambda_1 + \lambda_2}\),则优化目标可写成
\[\smash{\min_{w}}\sum_{i=1}^m(y_i-\sum_{j=1}^dx_{ij}w_j)^2 + \lambda\sum_{j=1}^d(\alpha|w_j|+(1-\alpha)w_j^2) \tag{14} \]
由此可知,弹性网的惩罚函数\(\lambda\sum_{j=1}^d(\alpha|w_j|+(1-\alpha)w_j^2)\)恰好为岭回归惩罚函数和Lasso惩罚函数的一个凸线性组合。当\(\alpha=0\)时,弹性网回归即为岭回归;当\(\alpha=1\)时,弹性网回归即为Lasso回归。因此,弹性网回归兼有Lasso回归和岭回归的优点,既能达到变量选择的目的,又具有很好的群组效应。
更多弹性网回归的内容可以阅读Hui Zou和Trevor Hastie的论文《Zou, H.; Hastie, T. (2005). Regularization and Variable Selection via the Elastic Net. Journal of the Royal Statistical Society. Series B (statistical Methodology). 67 (2): 301–20.》
参考来源:
1) 机器学习-周志华
2)从零开始学Python【24】--岭回归及LASSO回归(理论部分)
3)https://www.biaodianfu.com/ridge-lasso-elasticnet.html
4)https://blog.csdn.net/weixin_43374551/java/article/details/83688913
5)https://blog.csdn.net/u012151283/article/details/77487729 Lasso回归的坐标下降法推导
6)https://blog.csdn.net/weixin_41500849/article/details/80447501 岭回归,Lasso回归和弹性网回归理论及特点