目标函数

Lasso相当于带有L1正则化项的线性回归。先看下目标函数: R S S ( w ) + λ w 1 = i = 0 N ( y i j = 0 D w j h j ( x i ) ) 2 + λ j = 0 D w j RSS(w)+\lambda \Vert w\Vert_1=\sum_{i=0}^{N}(y_i-\sum_{j=0}^D{w_jh_j(x_i)})^2+\lambda \sum_{j=0}^{D}|w_j| RSS(w)+λw1=i=0N(yij=0Dwjhj(xi))2+λj=0Dwj
这个问题由于正则化项在零点处不可求导,所以使用非梯度下降法进行求解,如坐标下降法或最小角回归法。

坐标下降法

本文介绍坐标下降法。
坐标下降算法每次选择一个维度进行参数更新,维度的选择可以是随机的或者是按顺序。
当一轮更新结束后,更新步长的最大值少于预设阈值时,终止迭代。

下面分为两部求解

RSS偏导


下面做一下标记化简
ρ j = i = 1 N h j ( x i ) ( y i k j w k h k ( x i ) ) \rho_j=\sum_{i=1}^Nh_j(x_i)(y_i-\sum_{k \neq j }w_kh_k(x_i)) ρj=i=1Nhj(xi)(yik̸=jwkhk(xi))
z j = i = 1 N h j ( x i ) 2 z_j=\sum_{i=1}^N h_j(x_i)^2 zj=i=1Nhj(xi)2
上式化简为 w j R S S ( w ) = 2 ρ j + 2 w j z j \frac{\partial}{\partial w_j}RSS(w)=-2\rho_j+2w_jz_j wjRSS(w)=2ρj+2wjzj

正则项偏导

次梯度方法(subgradient method)是传统的梯度下降方法的拓展,用来处理不可导的凸函数。

λ w j w j = { <mstyle displaystyle="false" scriptlevel="0"> λ </mstyle> <mstyle displaystyle="false" scriptlevel="0"> w j &lt; 0 </mstyle> <mstyle displaystyle="false" scriptlevel="0"> [ λ , λ ] </mstyle> <mstyle displaystyle="false" scriptlevel="0"> w j = 0 </mstyle> <mstyle displaystyle="false" scriptlevel="0"> λ </mstyle> <mstyle displaystyle="false" scriptlevel="0"> w j &gt; 0 </mstyle> \lambda \partial_{w_j}|w_j|= \begin{cases} -\lambda&amp;w_j&lt;0\\ [-\lambda,\lambda]&amp; w_j=0\\ \lambda&amp;w_j&gt;0 \end{cases} λwjwj=λ[λ,λ]λwj<0wj=0wj>0

整体偏导数

λ w j <mtext> [lasso cost] </mtext> = 2 z j w j 2 ρ j + { <mstyle displaystyle="false" scriptlevel="0"> λ </mstyle> <mstyle displaystyle="false" scriptlevel="0"> w j &lt; 0 </mstyle> <mstyle displaystyle="false" scriptlevel="0"> [ λ , λ ] </mstyle> <mstyle displaystyle="false" scriptlevel="0"> w j = 0 </mstyle> <mstyle displaystyle="false" scriptlevel="0"> λ </mstyle> <mstyle displaystyle="false" scriptlevel="0"> w j &gt; 0 </mstyle> = { <mstyle displaystyle="false" scriptlevel="0"> 2 z j w j 2 ρ j λ </mstyle> <mstyle displaystyle="false" scriptlevel="0"> w j &lt; 0 </mstyle> <mstyle displaystyle="false" scriptlevel="0"> [ 2 ρ j λ , 2 ρ j + λ ] </mstyle> <mstyle displaystyle="false" scriptlevel="0"> w j = 0 </mstyle> <mstyle displaystyle="false" scriptlevel="0"> 2 z j w j 2 ρ j + λ </mstyle> <mstyle displaystyle="false" scriptlevel="0"> w j &gt; 0 </mstyle> \lambda \partial_{w_j}\text{[lasso cost]}= 2z_jw_j-2\rho_j+ \begin{cases} -\lambda&amp;w_j&lt;0\\ [-\lambda,\lambda]&amp; w_j=0\\ \lambda&amp;w_j&gt;0 \end{cases}\\ =\begin{cases} 2z_jw_j-2\rho_j-\lambda&amp;w_j&lt;0\\ [-2\rho_j-\lambda,-2\rho_j+\lambda]&amp; w_j=0\\ 2z_jw_j-2\rho_j+\lambda&amp;w_j&gt;0 \end{cases} λwj[lasso cost]=2zjwj2ρj+λ[λ,λ]λwj<0wj=0wj>0=2zjwj2ρjλ[2ρjλ,2ρj+λ]2zjwj2ρj+λwj<0wj=0wj>0
要想获得最有解,令

λ w j <mtext> [lasso cost] </mtext> = 0 \lambda \partial_{w_j}\text{[lasso cost]}=0 λwj[lasso cost]=0
解得,
<mover accent="true"> w ^ </mover> j = { <mstyle displaystyle="false" scriptlevel="0"> ( ρ j + λ / 2 ) / z j </mstyle> <mstyle displaystyle="false" scriptlevel="0"> ρ j &lt; λ / 2 </mstyle> <mstyle displaystyle="false" scriptlevel="0"> 0 </mstyle> <mstyle displaystyle="false" scriptlevel="0"> ρ j <mtext>  in  </mtext> [ λ / 2 , λ / 2 ] </mstyle> <mstyle displaystyle="false" scriptlevel="0"> ( ρ j λ / 2 ) / z j </mstyle> <mstyle displaystyle="false" scriptlevel="0"> ρ j &gt; λ / 2 </mstyle> \hat w_j= \begin{cases} (\rho_j+\lambda/2)/z_j&amp;\rho_j&lt;-\lambda/2\\ 0&amp; \rho_j\text{ in }[-\lambda/2,\lambda/2]\\ (\rho_j-\lambda/2)/z_j&amp;\rho_j&gt;\lambda/2 \end{cases} w^j=(ρj+λ/2)/zj0(ρjλ/2)/zjρj<λ/2ρj in [λ/2,λ/2]ρj>λ/2

伪代码

预计算 z j = i = 1 N h j ( x i ) 2 z_j=\sum_{i=1}^N h_j(x_i)^2 zj=i=1Nhj(xi)2
初始化参数w(全0或随机)
循环直到收敛:

for j = 0,1,…D
$ \space \space\space\space\rho_j=\sum_{i=1}^Nh_j(x_i)(y_i-\sum_{k \neq j }w_kh_k(x_i))$
<mtext>      </mtext> u p d a t e <mtext>   </mtext> w j \space \space\space\space update\space w_j     update wj
选择变化幅度最大的维度进行更新

概率解释

拉普拉斯分布

随机变量 X L a p l a c e ( μ , b ) X\sim Laplace(\mu,b) XLaplace(μ,b),其中 μ \mu μ是位置参数, b &gt; 0 b&gt;0 b>0是尺度参数。
概率密度函数为
f ( x μ , b ) = 1 2 b e x p ( x μ b ) f(x|\mu,b)=\frac{1}{2b}exp(-\frac{|x-\mu|}{b}) f(xμ,b)=2b1exp(bxμ)

MAP推导

假设 ϵ i N ( 0 , σ 2 ) \epsilon_i\sim N(0,\sigma^2) ϵiN(0,σ2) w i L a p l a c e ( 0 , 1 λ ) w_i\sim Laplace(0,\frac{1}{\lambda}) wiLaplace(0,λ1)

等价于