坐标下降法(coordinate descent method)求解LASSO的推导
坐标下降法(coordinate descent method)求解LASSO推导
LASSO在尖点是singular的,因此传统的梯度下降法、牛顿法等无法使用。常用的求解算法有最小角回归法、coordinate descent method等。
由于coordinate descent method是相对较简单的做法,放在第一个介绍。
坐标下降法思想
坐标下降法基于的思想很简单,就是当面对最小化一个多元函数的问题时,我们每一次迭代的时候只改变一个目标变量的值。也就是固定其他变量不动,只在该变量的维度上寻找一个使函数最小的值。这种思想类似于贪心算法。
推导过程
定义Loss function为:
其中,\(x_i\)是p·1维的向量,\(\beta\)是p·1维的向量。
Penalty为Lasso penalty:
定义超参数为\(\lambda\)
目标函数为:
应用坐标下降法的思想,我们固定住\(x_k\ne x_j\)的变量,然后在每一轮迭代中只优化\(x_j\)。
可以采用的迭代顺序是从j=1依次到p进行迭代,然后再从j=1开始。
当固定住其他变量时,求object function的极小值就等价于求解一元LASSO的问题。
其中,\(r_i=y_i-\sum_{k\ne j}x_{ik}\beta_k\),也就是只用其他变量拟合y的残差。
将式1稍微化简一下,可以得到:
这是一个二次函数。由于涉及到绝对值,我们需要分两个区间讨论:\(\beta_j<0\)和\(\beta_j>0\)
相当于我们将\(\beta_j\)的取值划成了两个空间,分别讨论极值。最后的极值是把这两个空间的极值再取最小值。
- 第一个区间, \(\beta_j>0\)
可以观察到object function是一个开口向上二次函数,全局最小点在\(\beta_j=\frac{2\frac{\sum r_ix_i}{N}-\lambda}{2\sum x_i^2}{N}\)处取得。
但是我们这时的定义域限制在 \(\beta_j>0\),因此需要分类讨论是否能取全局最小点:
- 第二个区间,\(\beta_j<0\)
全局最小点在\(\beta_j=\frac{2\frac{\sum r_ix_i}{N}+\lambda}{2\sum x_i^2}{N}\)处取得。
但是我们这时的定义域限制在 \(\beta_j<0\),因此需要分类讨论是否能取全局最小点:
综合上面的讨论,
-
case1:\(2\frac{\sum r_ix_i}{N}<-\lambda\)
\(\beta_j^{*}=\frac{2\frac{\sum r_ix_i}{N}+\lambda}{2\sum x_i^2}{N}\) -
case2:\(-\lambda<2\frac{\sum r_ix_i}{N}<\lambda\)
\(\beta_j^{*}=0\) -
case3:\(\lambda<2\frac{\sum r_ix_i}{N}\)
\(\beta_j^{*}=\frac{2\frac{\sum r_ix_i}{N}-\lambda}{2\sum x_i^2}{N}\)
定义一个软阈值函数来统一三个case
comment
对于用L2 loss function作为损失函数的回归问题,由于object function是关于\(\beta\)的凸函数,因此我们一定可以找到一个全局最优点。迭代过程是收敛的。