LASSO 回归
LASSO,全称为 Least Absolute Shrinkage and Selection Operator。
岭回归是对最小二乘目标又增加了L2范数目标,而 LASSO 回归则是对最小二乘目标增加了L1范数目标,虽然L1范数比L2范数好(因为它可以进一步推进向量中的小的部分更接近,而L2范数无法达到,可以用直角三角形进行举例,L2只能控制到直角三角形的斜边到一个较小的值,但是无法控制到两直角边的值,L1可以进一步控制两直角边的和较小;而其实最好的是L0范数)
但是L1的定义是不可导的,因此无法得到闭合解,而需要采用迭代方法求解。
【LASSO 方法在稀疏数据上的效果强于 Ridge 方法(当样本维度非常巨大的时候,我们想要通过一组基去表示一个向量 Y,该基对应系数应该有较多的0存在),它能使得系数更纯粹更简单。也能降低回归模型的复杂度(回归系数有更多的0存在)】
计算LASSO的两种迭代方法,次梯度下降法(subgradient method),近端梯度下降法(proximal gradient descent)。
次梯度下降法:
对于非光滑的最优点,如果次梯度集合中存在 0,则该点是最优点,这可由次梯度的定义式 f(y)≥f(x)+gT(y−x) 可以看出。(虽然次梯度下降法并不是基于此进行设计)
次梯度下降法的迭代过程为 xk=xk−1−tkgk
tk 是提前选取的,满足 ∑k=1∞tk2≤∞,∑k=1∞tk=∞,步长 tk 在这样的条件下,算法能够收敛,由于负次梯度不一定是下降方向,因此选择 argminxif(xi) 作为 k 步内的最优点。
(其实这样一看,感觉次梯度下降法还是挺弱的)
近端梯度下降法
在介绍近端梯度下降法之前,需要对正常的光滑凸函数的梯度下降过程进行一下改变,在每一步迭代中,x(k)=x(k−1)−tk∇f(xk−1),假如步长 tk 给定,那么事实上 xk 也是下列问题的最优解,即
x(k)=argzminf(x(k))+∇f(x(k))T(z−x(k))+2t1∣∣z−x(k)∣∣22
将 x(k) 用 x+ 表示,将 x(k−1) 用 x 表示,引入 h(x),经过配方等过程得到(这里不再展开):
x+=argzmin2t1∣∣z−(x−t∇f(x))∣∣22+h(z)
【这样变换的想法是什么】
实际上,是想让确定的下一个点,变成相对不确定可以变化的,或者说,是以 x−t∇g(x) 为目标,严格来说,x+ 甚至可以是
minz∣∣z−(x−t∇g(x))∣∣2 的最优解,可以是 minz2t1∣∣z−(x−t∇g(x))∣∣22 的最优解,甚至可以是 minz2t21∣∣z−(x−t∇g(x))∣∣22 的最优解。t 起到尺度变换的作用,调节 h(z)与拟合精度之间的关系。
整个近端梯度下降法可以认为是,先进行正常的梯度下降法计算出 x(k−1)−tk∇f(x(k−1)),然后再进行近端投影,得到 xk。
proxt,h(x) 定义为 argminz21∣∣z−x∣∣2+t⋅h(z),可以看作是 x 的一个投射。为何称为近端算子呢,因为投射之后的对象 z,是在原对象 x 附近的(它想往原位置靠)。
几种常见的近端算子(priximal project/proximal operator):
当 h(⋅)=0 是,此时 z=x
当 h(⋅) 为集合指示函数时(在集合内为0,在集合外为 ∞), 此时 z 是 x 在集合中的投影。
当 h(⋅) 为1范数的时候,此时 z 是 x 软阈值(λ)之后的值。在LASSO中则是 λt。
补充:
为什么近端投射(1范数版)的具体形式是软阈值函数。
软阈值函数的形式如下
soft_thrt(x)=⎩⎨⎧x−t(ifx>t)0(if−t<x<t)x+t(ifx<−t)
这一结论实际上是从次梯度下降法得来的。
对于 Lasso的目标 21∣∣Y−Xβ∣∣22+λ∣∣β∣∣1 的次梯度(次梯度使用记号 ∂)应该有
0∈XT(Y−Xβ)−λ∂∣∣β∣∣1
问题转变为寻找合适的 β 使得 XT(Y−Xβ)−λ∂∣∣β∣∣1=0
当 X 是单位矩阵 I 时,可以推得软间隔算子。
具体来说,对于 (Y−β)−γ∂∣∣β∣∣1=0,只需要讨论每一维度即可,即
(y−β)=γ∂∣∣β∣∣1
当 y>γ时,β=y−γ
当 y<−γ时,β=y−γ
当 −γ<y<γ时,β=0
如果想要延伸到近端投射(0范数版),由于0范数甚至没有左导数与右导数,因此没有办法得到次导数的概念,因此也没有办法像近端投射(1范数版)那样使用次梯度的性质直接得到近端最优点。