岭(Ridge 线性回归大结局、 Lasso回归原理、公式推导),你想要的这里都有( 四 )


Lasso回归岭回归是在损失函数中加一个\(L_2\)损失,而\(Lasso\)回归是在损失函数\(\mathcal{L(\hat{w})}\)后面加一个\(L_1\)的损失,即:
\[\mathcal{L(\hat{w})} = ||X\hat{w} - Y||_2^2 + \alpha\sum_{j=0}^{m}|{\hat{w}}_j| \tag{25}\]对公式\((25)\)求导:
\[\frac{\partial \mathcal{L(\hat{w})}}{\partial \hat{w}} = 2X^TX\hat{w} - 2X^TY + \alpha C = 0 \tag{26}\\\]\[\left\{\begin{matrix}c_i = -1\ ,\ if\\hat{w}_i < 0;\\c_i = 1\ ,\ if\\hat{w}_i \ge 0;\\\end{matrix}\right.\]其中\(C\)是和\(\hat{w}\)同维度的向量 。则可以得到:
\[\hat{w} = (X^TX)^{-1}(X^TY-\frac{\alpha}{2} C)\tag{27}\]线性回归实现过程上面提到\(\mathcal{L(w, b)}\)是一个关于 \(\hat{w}\) 的凸函数,则当它关于\(\hat{w}\)导数为0时求出的\(\hat{w}\)是\(\hat{w}\)的最优解,因此在编码实现线性回归的过程中,如果数据集比较小可以直接将所有的数据同时进行计算,节省计算资源,因为只需要计算一次 \(\hat{w}\) 的导数 。但是如果数据量过大的话,计算无法一次性完成,可以使用随机梯度下降法,或者其他的优化算法,进行多次迭代学习,得到最终的结果 。
Ridge回归和Lasso回归区别上面谈到了 \(Ridge\) 和 \(Lasso\) 的具体的实现方法,还简要谈到了 \(Ridge\) 可以有效防止模型过拟合,和他在数据个数小于数据维度的时候的使用 。那么都是增加一个惩罚项,那么 \(Ridge\) 和 \(Lasso\) 有什么区别呢?

  • \(Ridge\) 和 \(Lasso\) 都可以在一定程度上防止模型过拟合
  • \(Ridge\) 在数据个数小于数据维度的时候比较适合
  • \(Lasso\) 的数据的属性之间有共线性的时候比较适合
  • \(Ridge\) 会限制参数的大小,使他逼近于0
  • \(Lasso\) 是一种稀疏模型,可以做特征选择
【岭(Ridge 线性回归大结局、 Lasso回归原理、公式推导),你想要的这里都有】为什么 \(Lasso\) 是一种稀疏模型,因为它在训练的过程中可以使得权重 \(\hat{w}\) 中的某些值变成0(稀疏权重),如果一个属性对应的权重为0,那么该属性在最终的预测当中并没有发挥作用,这就相当与模型选择了部分属性(他们你的权重不为0) 。我们很容易知道既然这些属性对应的权值为0,即他对于模型来说并不重要,模型只选择了些权重不为0的属性,所以说 \(Lasso\) 可以做特征选择 。而\(Ridge\) 也会不断降低权值的大小,但是他不会让权值变成0,只会不断的缩小权值,使其逼近于0 。
Ridge和Lasso对权值的影响在正式讨论这个问题之间我们首先先来分析不同的权值所对应的\(RSS\)(残差平方和)值是多少 。\(RSS\)的定义如下:
\[RSS = \sum_{i=0}^{n}(x_i\hat{w} - y_i)^2\]对于一个只有两个属性的数据,对不同的权值计算整个数据集在相应权值下的 \(RSS\)。然后将 \(RSS\) 值相等的点连接起来做成一个等高线图,看看相同的\(RSS\) 值下权值围成了一个什么图形 。
对于一个只有两个属性的数据,他的参数为 \(\hat{w} = (\hat{w_1}, \hat{w_2})\),然后计算在参数\(\hat{w}\) 的情况下,计算整个数据集的 \(RSS\) :数据点的坐标就是 \((\hat{w}_1, \hat{w}_2)\),等高线的高度就是 \(RSS\) 。
比如我们有两个属性 \(x_1, x_2\) 它们有一个线性组合 \(y = 0.2 * x1 + 0.1 * x2\) 很容易直到 \(y\) 和 \(x_1, x_2\) 之间是一个线性组合关系:
\[y = \left[\begin{matrix} x_1, x_2\end{matrix}\right] \cdot \left[\begin{matrix} 0.2 \\ 0.1\end{matrix}\right]\]即我们要求的权值 \(\hat{w} = \left[\begin{matrix} 0.2 \\ 0.1\end{matrix}\right]\) 因为和真实值一样,所以它对应的 \(RSS\) 为0 。我们现在要做的就是针对不同的 \(\hat{w}\) 的取值去计算其所对应的 \(RSS\) 值 。比如说 \(\hat{w}\) 取到下面图中的所有的点 。然后去计算这些点对应的 \(RSS\) ,然后将 \(RSS\) 值作为等高线图中点对应的高,再将 \(RSS\) 相同的点连接起来就构成了等高线图 。

经验总结扩展阅读