LASSO 回归

186 阅读1分钟

LASSO 回归

LASSO,全称为 Least Absolute Shrinkage and Selection Operator。

岭回归是对最小二乘目标又增加了L2范数目标,而 LASSO 回归则是对最小二乘目标增加了L1范数目标,虽然L1范数比L2范数好(因为它可以进一步推进向量中的小的部分更接近,而L2范数无法达到,可以用直角三角形进行举例,L2只能控制到直角三角形的斜边到一个较小的值,但是无法控制到两直角边的值,L1可以进一步控制两直角边的和较小;而其实最好的是L0范数)

但是L1的定义是不可导的,因此无法得到闭合解,而需要采用迭代方法求解。

【LASSO 方法在稀疏数据上的效果强于 Ridge 方法(当样本维度非常巨大的时候,我们想要通过一组基去表示一个向量 YY,该基对应系数应该有较多的0存在),它能使得系数更纯粹更简单。也能降低回归模型的复杂度(回归系数有更多的0存在)】

计算LASSO的两种迭代方法,次梯度下降法(subgradient method),近端梯度下降法(proximal gradient descent)。

次梯度下降法:

对于非光滑的最优点,如果次梯度集合中存在 0\overrightarrow0,则该点是最优点,这可由次梯度的定义式 f(y)f(x)+gT(yx)f(y)\ge f(x)+g^T(y-x) 可以看出。(虽然次梯度下降法并不是基于此进行设计)

次梯度下降法的迭代过程为 xk=xk1tkgkx_k=x_{k-1}-t_kg_k

tkt_k 是提前选取的,满足 k=1tk2\sum_{k=1}^\infty t_k^2\le \inftyk=1tk=\sum_{k=1}^\infty t_k= \infty,步长 tkt_k 在这样的条件下,算法能够收敛,由于负次梯度不一定是下降方向,因此选择 argminxif(xi) \arg \min_{x_i} f(x_i) 作为 kk 步内的最优点。

(其实这样一看,感觉次梯度下降法还是挺弱的)

近端梯度下降法

在介绍近端梯度下降法之前,需要对正常的光滑凸函数的梯度下降过程进行一下改变,在每一步迭代中,x(k)=x(k1)tkf(xk1)x^{(k)}=x^{(k-1)}-t_k\nabla f(x^{k-1}),假如步长 tkt_k 给定,那么事实上 xkx^k 也是下列问题的最优解,即

x(k)=argminzf(x(k))+f(x(k))T(zx(k))+12tzx(k)22x^{(k)}=\arg \min_z f(x^{(k)})+\nabla f(x^{(k)})^T(z-x^{(k)})+\frac{1}{2t}||z-x^{(k)}||^2_2

x(k)x^{(k)}x+x^+ 表示,将 x(k1)x^{(k-1)}xx 表示,引入 h(x)h(x),经过配方等过程得到(这里不再展开):

x+=argminz12tz(xtf(x))22+h(z)x^+= \arg \min_z \frac{1}{2t}||z-(x-t\nabla f(x))||_2^2 +h(z)

【这样变换的想法是什么】
实际上,是想让确定的下一个点,变成相对不确定可以变化的,或者说,是以 xtg(x)x-t\nabla g(x) 为目标,严格来说,x+x^+ 甚至可以是 minzz(xtg(x))2\min_z||z-(x-t\nabla g(x))||^2 的最优解,可以是 minz12tz(xtg(x))22\min_z \frac{1}{2t}||z-(x-t\nabla g(x))||_2^2 的最优解,甚至可以是 minz12t2z(xtg(x))22\min_z \frac{1}{2t^2}||z-(x-t\nabla g(x))||_2^2 的最优解。tt 起到尺度变换的作用,调节 h(z)h(z)与拟合精度之间的关系。

整个近端梯度下降法可以认为是,先进行正常的梯度下降法计算出 x(k1)tkf(x(k1))x^{(k-1)}-t_{k}\nabla f(x^{(k-1)}),然后再进行近端投影,得到 xkx^{k}


proxt,h(x) \mathrm{prox}_{t,h}(x) 定义为 argminz12zx2+th(z)\arg \min_z \frac{1}{2} ||z-x||^2+t\cdot h(z),可以看作是 xx 的一个投射。为何称为近端算子呢,因为投射之后的对象 zz,是在原对象 xx 附近的(它想往原位置靠)。

几种常见的近端算子(priximal project/proximal operator):

h()=0h(\cdot)=0 是,此时 z=xz=x

h()h(\cdot) 为集合指示函数时(在集合内为0,在集合外为 \infty), 此时 zzxx 在集合中的投影。

h()h(\cdot) 为1范数的时候,此时 zzxx 软阈值(λ\lambda)之后的值。在LASSO中则是 λt\lambda t

补充:

为什么近端投射(1范数版)的具体形式是软阈值函数。

软阈值函数的形式如下

soft_thrt(x)={xt(ifx>t)0(ift<x<t)x+t(ifx<t)\mathrm{soft\_thr_t}(x)=\begin{cases} x-t \qquad (if \quad x>t)\\ 0 \qquad (if \quad -t<x<t)\\ x+t \qquad(if \quad x<-t)\\ \end{cases}

这一结论实际上是从次梯度下降法得来的。

对于 Lasso的目标 12YXβ22+λβ1 \frac{1}{2}||Y-X\beta||^2_2+\lambda ||\beta||_1 的次梯度(次梯度使用记号 \partial )应该有

0XT(YXβ)λβ1\overrightarrow 0\in X^T(Y-X\beta)-\lambda \partial ||\boldsymbol\beta||_1

问题转变为寻找合适的 β\beta 使得 XT(YXβ)λβ1=0 X^T(Y-X\boldsymbol\beta)-\lambda \partial ||\boldsymbol\beta||_1=\overrightarrow 0

XX 是单位矩阵 II 时,可以推得软间隔算子。

具体来说,对于 (Yβ)γβ1=0(Y-\beta)-\gamma \partial||\beta||_1=\overrightarrow 0,只需要讨论每一维度即可,即
(yβ)=γβ1(y-\beta)=\gamma \partial||\beta||_1

y>γy>\gamma时,β=yγ\beta =y-\gamma

y<γy<-\gamma时,β=yγ\beta =y-\gamma

γ<y<γ-\gamma <y<\gamma时,β=0\beta =0

如果想要延伸到近端投射(0范数版),由于0范数甚至没有左导数与右导数,因此没有办法得到次导数的概念,因此也没有办法像近端投射(1范数版)那样使用次梯度的性质直接得到近端最优点。