前面的文章对线性回归做了一个小结,文章在这:线性回归原理小结。里面对线程回归的正则化也做了一个初步的介绍。提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归。但是对于Lasso回归的解法没有提及,本文是对该文的补充和扩展。以下都用矩阵法表示,如果对于矩阵分析不熟悉,推荐学习张贤达的《矩阵分析与应用》。
1. 回顾线性回归
首先我们简要回归下线性回归的一般形式:
需要极小化的损失函数是:
如果用梯度下降法求解,则每一轮迭代的表达式是:
其中为步长。
如果用最小二乘法,则的结果是:
2. 回顾Ridge回归
由于直接套用线性回归可能产生过拟合,我们需要加入正则化项,如果加入的是L2正则化项,就是Ridge回归,有时也翻译为脊回归。它和一般线性回归的区别是在损失函数上增加了一个L2正则化的项,和一个调节线性回归项和正则化项权重的系数。损失函数表达式如下:
其中为常数系数,需要进行调优。为L2范数。
Ridge回归的解法和一般线性回归大同小异。如果采用梯度下降法,则每一轮迭代的表达式是:
其中为步长。
如果用最小二乘法,则的结果是:
其中E为单位矩阵。
Ridge回归在不抛弃任何一个变量的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但这会使得模型的变量特别多,模型解释性差。有没有折中一点的办法呢?即又可以防止过拟合,同时克服Ridge回归
模型变量多的缺点呢?有,这就是下面说的Lasso回归。
3. 初识Lasso回归
Lasso回归有时也叫做线性回归的L1正则化,和Ridge回归的主要区别就是在正则化项,Ridge回归用的是L2正则化,而Lasso回归用的是L1正则化。Lasso回归的损失函数表达式如下:
其中n为样本个数,为常数系数,需要进行调优。为L1范数。
Lasso回归使得一些系数变小,甚至还是一些绝对值较小的系数直接变为0,因此特别适用于参数数目缩减与参数的选择,