最小二乘法的表示形式很多,其對偶形式也很多。這裏學習了CVX官網的例子,求解最小二乘法的幾種形式,這裏進行簡單的分析,看看是怎麼得到的。
數據生成部分
randn('state',0);
n = 4;
m = 2*n;
A = randn(m,n);
b = randn(m,1);
p = 2;
q = p/(p-1);
第一種形式
cvx_begin quiet
variable x(n)
minimize ( norm ( A*x - b , p) )
cvx_end
第二種形式
cvx_begin quiet
variables x(n) y(m)
minimize ( norm ( y , p ) )
A*x - b == y;
cvx_end
第三種形式
cvx_begin quiet
variable nu(m)
maximize ( b'*nu )
norm( nu , q ) <= 1;
A'*nu == 0;
cvx_end
這個形式怎麼推導出來的並清楚,不過意思容易解釋
如下圖所示,b=b^+be,be與X的列空間正交,求取min ∣∣Ax−b∣∣2=min ∣∣∣Ax−b^∣+∣∣be∣∣的過程等同於使∣∣max be∣∣ s.t. be⊥Col(A),也就是求b中與X列空間正交的部分。
maximize bTvs.t. ∣∣v∣∣<=1,XTv=0
顯然,這個解是v∗=be/∣∣be∣∣,∣∣v∗∣∣=1
第四種形式
和第二種差不多
minimize 1/2∣∣y∣∣2s.t. Ax−b=y
cvx_begin quiet
variables x(n) y(m)
minimize ( 0.5 * square_pos ( norm ( y , p ) ) )
A*x - b == y;
cvx_end
第五種形式
cvx_begin quiet
variable nu(m)
maximize ( -0.5 * square_pos ( norm ( nu , q ) ) + b'*nu )
A'*nu == 0;
cvx_end
首先給出最小二乘法的優化形式
min 21beTbes.t. b−Ax−be=0
拉格朗日方程式:
L(be,x,v)=21beTbe+vT(b−Ax−be)∂be∂L=be−v∂x∂L=−ATv∂v∂L=b−Ax−be
令偏導數爲0得到
be=v−ATv=0b−Ax−be=0
帶入拉格朗日公式得到
g(v)=xinf(f(x)+vTh)=−21vTv+bTv
這裏,f(x)=∣∣Ax−b∣∣,假設其最優解爲f(x∗)。g(v)爲凹函數,是L(be,x,v)的下界.
因此,對偶形式如下:
max g(v)=−21vTv+bTvs.t. ATv=0
在所有可行解x∈D裏面,有L(be,x,v)=f(x)+vTh=f(x)≥f(x∗)≥g(be,v)
第三種形式和第五種形式很像,如果給個∣∣v∣∣=1的約束,兩者就是一樣的形式了
參考
http://web.cvxr.com/cvx/examples/cvxbook/Ch05_duality/html/norm_approx.html