LASSO非常实用,但由于它的惩罚项不可以常规地进行求导,使得很多人以为它无法显式地求出解析解。但其实并不是这样的。
1 单变量情形:软阈值法
1.1 软阈值的分类讨论
将 N N N个样本的真实值记为 N N N维向量 y y y,将 N N N个样本的自变量记为 z z z,假设我们已经将自变量做过标准化,即 z ′ ℓ N = 0 z' \ell_N=0 z′ℓN=0, z ′ z / N = 1 z'z/N=1 z′z/N=1,这也意味着在LASSO模型中截距项为 0 0 0。系数 β \beta β是要优化的参数,惩罚项参数为 λ > 0 \lambda\gt 0 λ>0。
LASSO就是要求解
arg min β 1 2 N ( y − z β ) ′ ( y − z β ) + λ ∣ β ∣ (1) \argmin_\beta \dfrac{1}{2N}(y-z\beta)'(y-z\beta)+\lambda |\beta| \tag{1} βargmin2N1(y−zβ)′(y−zβ)+λ∣β∣(1)
忽略常数项后,上式等价于
arg min β 1 2 β 2 − y ′ z N β + λ ∣ β ∣ \argmin_\beta \dfrac{1}{2}\beta^2 -\dfrac{y'z}{N}\beta+ \lambda |\beta| βargmin21β2−Ny′zβ+λ∣β∣
将损失函数写成分段函数形式:
f ( β ) = { f 1 ( β ) = 1 2 β 2 − ( y ′ z N + λ ) β , β < 0 f 2 ( β ) = 1 2 β 2 − ( y ′ z N − λ ) β , β ≥ 0 f(\beta)=\begin{cases} f_1(\beta) = \dfrac{1}{2}\beta^2 -\left(\dfrac{y'z}{N} + \lambda\right)\beta , \beta \lt 0\\ f_2(\beta) = \dfrac{1}{2}\beta^2 -\left(\dfrac{y'z}{N}- \lambda\right)\beta, \beta \geq 0 \end{cases} f(β)=⎩⎪⎪⎨⎪⎪⎧f1(β)=21β2−(Ny′z+λ)β,β<0f2(β)=21β2−(Ny′z−λ)β,β≥0
分类讨论:
- 若 y ′ z N > λ \dfrac{y'z}{N}\gt \lambda Ny′