理论
Lasso回归在最小二乘法的基础上加上了一个 l 1 l_1 l1惩罚项
损失函数: J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 n ∣ θ j ∣ J(\theta)=\frac 1 {2m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda \sum_{j=1}^n|\theta_j| J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2+λj=1∑n∣θj∣
相比岭回归可以直接通过矩阵运算得到回归系数相比,LASSO的计算变得相对复杂。由于惩罚项中含有绝对值,此函数的导数是连续不光滑的,所以无法进行求导并使用梯度下降优化。
两种求解Lasso回归的方法:
- 坐标下降法
- 最小角回归
坐标下降法
坐标下降法,是沿着坐标轴的方向去下降。
坐标下降法的数学依据是:
一个可微的凸函数 J ( θ ) J(\theta) J(θ),其中 θ \theta θ是 n ∗ 1 n*1 n∗1的向量,即有 n n n个维度。如果在某一点 θ ‾ \overline \theta θ,使得 J ( θ ) J(\theta) J(θ)在每一个坐标轴 θ ‾ i ( i = 1 , 2 , . . . , n ) \overline \theta_i(i=1,2,...,n) θi(i=1,2,...,n)上都是最小值,那么 J ( θ ‾ i ) J(\overline \theta_i) J(θi)就是一个全局最小值
于是,我们的优化目标是:在 θ \theta θ的 n n n个坐标轴上,对损失函数做迭代的下降,当所有的坐标轴上的 θ i ( i = 1 , 2 , . . . , n ) \theta_i(i=1,2,...,n) θi(i=1,2,...,n)都收敛,此时损失函数最小,此时的 θ \theta θ即为我们要求的结果。
具体算法流程:
1、首先,初始化 θ \theta θ向量,随机取值即可,即为 θ ( 0 ) \theta^{(0)} θ(0),上面的括号里的数字表示当前迭代的轮数。
2、对于第 k k k轮的迭代,我们从 θ 1 ( k ) \theta_1^{(k)} θ1(k)开始,到 θ n ( k ) \theta_n^{(k)} θn(k)为止,依次求 θ i ( k ) \theta_i^{(k)} θi(k)。 θ i ( k ) \theta_i^{(k)} θi(k)的表达式如下:
θ i ( k ) ∈ a r g m i n ⏟ θ i J ( θ 1 ( k ) , θ 2 ( k ) , . . . θ i − 1 ( k ) , θ i , θ i + 1 ( k − 1 ) , . . . , θ n ( k − 1 ) ) \theta_i^{(k)} \in \underbrace{argmin}_{\theta_i} J(\theta_1^{(k)}, \theta_2^{(k)}, ... \theta_{i-1}^{(k)}, \theta_i, \theta_{i+1}^{(k-1)}, ..., \theta_n^{(k-1)}) θi(k)∈θi argminJ(θ1(k),θ2(k),...θi−1(k),θi,θ