ADMM算法求解二次项目标函数+l1正则项问题
问题描述
min x f ( x ) + λ ∣ ∣ x ∣ ∣ 1 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ( 1 ) \min_x f(x)+\lambda||x||_1······(1) xminf(x)+λ∣∣x∣∣1⋅⋅⋅⋅⋅⋅(1)
其中,f(x)为二次项函数,λ>0,x是 R n R^n Rn上的列向量。
分析
由于(1)带l1范数不可导,考虑将(1)转化为以下问题(2):
min f ( x ) + g ( z ) x − z = 0 \min f(x)+g(z)\\ x-z=0 minf(x)+g(z)x−z=0
其中,
g ( z ) = λ ∣ ∣ z ∣ ∣ 1 g(z)=\lambda||z||_1 g(z)=λ∣∣z∣∣1
则增广拉格朗日函数为
L ( x , z , y ) = f ( x ) + g ( z ) + y T ( x − z ) + n 2 ∣ ∣ x − z ∣ ∣ 2 2 L(x,z,y)=f(x)+g(z)+y^{T}(x-z)+\frac{n}{2}||x-z||_{2}^{2} L(x,z,y)=f(x)+g(z)+yT(x−z)+2n∣∣x−z∣∣22
迭代算法为
x k + 1 : = arg min x L ( x , z k , y k ) z k + 1 : = arg min z L ( x k + 1 , z , y k ) y k + 1 : = y k + n ( x k + 1 − z k + 1 ) x^{k+1}:=\argmin_xL(x,z^k,y^k)\\z^{k+1}:=\argmin_zL(x^{k+1},z,y^k)\\y^{k+1}:=y^k+n(x^{k+1}-z^{k+1}) xk+1:=xargminL(x,zk,yk)zk+1:=zargminL(xk+1,z,yk)yk+1:=yk+n(<