L1正则化问题

在线性优化中,通常会遇到l1正则化,由于L1不可导,所以如何求得最优解是个问题。

考虑最简单的线性模型, 用平方误差作为优化函数,则优化目标为:
在这里插入图片描述
使用L1正则化,则为:$ \operatorname * {min}\limits_{w}\summ_{i=1}(y_i-wTi) $

该优化目标也叫LASSO回归。

将(1)视为对w的函数,:

若f(x)可导,且∇f可导,且∇f满足L−Lipschitz条件,即存在常数L>0使得

∣ ∇ f ( x ′ ) − ∇ f ( x ) ∣ ≤ L ∣ x ′ − x ∣ , ∀ ( x , x ′ ) |\nabla f(x') - \nabla f(x)| \leq L|x'-x|, \forall (x,x') f(x)f(x)Lxx,(x,x)

∣ ∇ f ( x ′ ) − ∇ f ( x ) ∣ ∣ x ′ − x ∣ ≤ L , ∀ ( x , x ′ ) \frac{|\nabla f(x') - \nabla f(x)|}{|x'-x|} \leq L ,\forall (x,x') xxf(x)f(x)L,(x,x)

由导数的定义可得,

∣ ∇ 2 f ( x ) ≤ L |\nabla ^2 f(x) \leq L 2f(x)L

因此对优化目标在 x k x_k xk处进行二阶泰勒展开:

f ^ ( x k ) = f ( x k ) + ∇ f ( x k ) T ( x − x k ) + ∇ 2 f ( x k ) 2 ! ( x − x k ) T ( x − x k ) \hat{f}(x_k) = f(x_k)+\nabla f(x_k)^T(x-x_k)+\frac{\nabla ^2f(x_k)}{2!}(x-x_k)^T(x-x_k) f^(xk)=f(xk)+f(xk)T(xxk)+2!2f(xk)(xxk)T(xxk)

≤ f ( x k ) + ∇ f ( x k ) T ( x − x k ) + L 2 ( x − x k ) T ( x − x k ) \leq f(x_k)+\nabla f(x_k)^T(x-x_k)+\frac{L}{2}(x-x_k)^T(x-x_k) f(xk)+f(xk)T(xxk)+2L(xxk)T(xxk)

= f ( x k ) + L 2 ( ( x − x k ) T ( x − x k ) + 2 L ∇ f ( x k ) ( x − x k ) + 1 L 2 ∇ 2 f ( x k ) ) − 1 L 2 ∇ 2 f ( x k ) =f(x_k)+\frac{L}{2}((x-x_k)^T(x-x_k)+\frac{2}{L}\nabla f(x_k)(x-x_k)+\frac{1}{L^2}\nabla ^2f(x_k))-\frac{1}{L^2}\nabla ^2f(x_k) =f(xk)+2L((xxk)T(xxk)+L2f(xk)(xxk)+L212f(xk))L212f(xk)

= L 2 ∣ ∣ x − ( x k − 1 L ∇ f ( x k ) ) ∣ ∣ 2 2 + c o n s t =\frac{L}{2}||x-(x_k-\frac{1}{L}\nabla f(x_k))||^2_2+const =2Lx(xkL1f(xk))22+const

其中, c o n s t = f ( x k ) − − 1 L 2 ∇ 2 f ( x k ) const=f(x_k)--\frac{1}{L^2}\nabla ^2f(x_k) const=f(xk)L212f(xk)

显然, f ^ ( x ) m i n \hat{f}(x)_{min} f^(x)min z = x k − 1 L ∇ f ( x k ) z=x_k-\frac{1}{L}\nabla f(x_k) z=xkL1f(xk)处,带入(2)式得优化目标为:

首先我们讨论下式(3)的单调性,为了更加直观,我们先变换该式:

L 2 ∣ ∣ x − z ∣ ∣ 2 2 + λ ∣ x ∣ \frac{L}{2}||x-z||^2_2+\lambda|x| 2Lxz22+λx

= ∑ i = 1 d L 2 ( ( x i − z i ) 2 + λ ∣ x i ∣ ) =\sum^d_{i=1}\frac{L}{2}((x_i-z_i)^2+\lambda|x_i|) =i=1d2L((xizi)2+λxi)

考虑矩阵中的分量xi:

$ g(x)=\frac{L}{2}(x_i-z_i)^2+\lambda|x_i| \tag{4} $

对式(4)求导:

g ′ ( x ) = L ( x i − z i ) + λ s g n ( x i ) , g'(x)=L(x_i-z_i)+\lambda sgn(x_i), g(x)=L(xizi)+λsgn(xi),

s g n ( . ) sgn(.) sgn(.)为指示函数,满足 s g n ( x i ) = { 1 , x i > 0 0 , x i < 0 sgn(x_i)=\left\{\begin{aligned}1,x_i>0 \\0,x_i<0\end{aligned}\right. sgn(xi)={1,xi>00,xi<0,注意 x i = 0 x_i=0 xi=0时不可导。

g ′ ( x ) = L ( x i − z i ) + λ s g n ( x i ) = 0 , g'(x)=L(x_i-z_i)+\lambda sgn(x_i)=0, g(x)=L(xizi)+λsgn(xi)=0, x i x_i xi 的三种取值情况进行分析:

  • x i > 0 x_i>0 xi>0

    L ( x i − z i ) + λ = 0 L(x_i-z_i)+\lambda =0 L(xizi)+λ=0

    x i = z i − λ L x_i=z_i-\frac{\lambda}{L} xi=ziLλ

    因为 x i > 0 , x_i>0, xi>0,所以 z i > λ L z_i>\frac{\lambda}{L} zi>Lλ

  • x i < 0 x_i<0 xi<0

    L ( x i − z i ) − λ = 0 L(x_i-z_i)-\lambda =0 L(xizi)λ=0

    x i = z i + λ L x_i=z_i+\frac{\lambda}{L} xi=zi+Lλ

    因为 x i < 0 , x_i<0, xi<0,所以 z i < − λ L z_i<-\frac{\lambda}{L} zi<Lλ

  • x i = 0 x_i=0 xi=0

    g ( x ) = L 2 ( z i ) 2 g(x)=\frac{L}{2}(z_i)^2 g(x)=2L(zi)2为常量恒定不变。

综上可得:

x i = { z i − λ L , z i > λ L 0 ,      ∣ z i ∣ ≤ λ L      z i + λ L , z i < − λ L x_i=\left\{\begin{aligned}z_i-\frac{\lambda}{L},z_i>\frac{\lambda}{L} \\0,\ \ \ \ |z_i| \leq \frac{\lambda}{L}\ \ \ \ \\z_i+ \frac{\lambda}{L},z_i<-\frac{\lambda}{L}\end{aligned}\right. xi=ziLλ,zi>Lλ0,    ziLλ    zi+Lλ,zi<Lλ
代码:

def prox_l1(z, lambda_L):
  x = z - lambda_L
  y = -z - lambda_L
  x[x < 0] = 0
  y[y< 0] = 0
  # print(f'prox_l1 x:{(x-y).size()}')
  return x-y
LARS算法(Least Angle Regression)可以用于解决L1正则化问题,也被称为LASSO回归(Least Absolute Shrinkage and Selection Operator)。下面是使用LARS算法解决L1正则化问题的一般步骤: 1. 输入数据:将输入数据表示为矩阵X(大小为n × p)和响应变量y(大小为n × 1)。 2. 标准化数据:对X进行标准化处理,使每个变量的均值为0,标准差为1。这是为了确保不同变量之间的尺度差异不会影响结果。 3. 初始化:设置初始估计系数向量B为零,并初始化活跃集索引集合A为空集。 4. 迭代步骤: a. 计算残差向量r = y - X * B。 b. 计算每个变量与残差的相性c = X' * r,并选择与c相性最大的变量j。 c. 将变量j添加到活跃集索引集合A中。 d. 更新活跃集矩阵X_A和其伪逆矩阵G_A,以及系数向量a_A = G_A * c。 e. 计算单位向量gamma,其元素为G_A' * a_A。 f. 选择使得目标函数下降最快的方向i。即,选择满足gamma(i) > 0的i,其中gamma(i) / (1 - B(i))是最小的。 g. 计算步长theta,即使得c(i) - gamma(i) = G_A(:, i)' * r 的最大值。 h. 更新系数向量B:B(A) = B(A) + theta * a_A。 i. 更新残差向量r = y - X * B。 j. 重复步骤b到i,直到满足终止条件(例如,残差小于某个阈值)或达到预定的最大迭代次数。 5. 输出结果:返回最终的系数向量B和选择的特征索引集合A。 请注意,以上步骤仅为一般性描述,实际实现中可能存在一些细微的差异。此外,LARS算法可以通过控制参数来调整正则化程度,例如通过引入lambda参数来控制L1惩罚的强度。 希望这能回答您的问题!如果您还有其他疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值