魯棒最小二乘法的三種優化形式(CVX)


魯棒最小二乘法的主要思想是對誤差大的樣本進行抑制,減小他們對結果的影響。這裏主要整理一下參考部分的CVX代碼思路。這個代碼給出了三種等價的優化形式

數據初始部分

測試數據是隨機生成的

randn('state',0);
m = 16; n = 8;
A = randn(m,n);
b = randn(m,1);
M = 2;

(a) robust least-squares problem

minimizeβi=1mhuber(βTxiyi)huber(u)={u2,u<=MM(2uM),u>M \underset{\beta}{minimize}\sum_{i=1}^{m} huber(\beta^Tx_i - y_i)\\ huber(u)=\left\{\begin{matrix} u^2 ,&|u| <= M \\ M(2|u| - M),& |u| > M \end{matrix}\right.
這裏是對他們的誤差進行限制,以免迴歸係數過度偏向誤差大的樣本造成過擬合,M是一個常數。
βTxiyi>M|\beta^Tx_i - y_i|>M,令u=βTxiyi=M+v,v>0|u|=|\beta^Tx_i - y_i|=M+v,v>0,則有M(2uM)=M(2(M+v)M)=M2+2Mv=(M+v)2v2M(2|u| - M)=M(2(M+v)-M)=M^2+2Mv=(M+v)^2-v^2
v視爲超出M的部分,爲了放緩殘差的增長速率,這個函數實際時扔掉了v的二次項

disp('Computing the solution of the robust least-squares problem...');
cvx_begin
    variable x1(n)
    minimize( sum(huber(A*x1-b,M)) )
cvx_end

(b)least-squares problem with variable weights

權值優化

disp('Computing the solution of the least-squares problem with variable weights...');
cvx_begin
    variable x2(n)
    variable w(m)
    minimize( sum(quad_over_lin(diag(A*x2-b),w'+1)) + M^2*ones(1,m)*w)
    w >= 0;
cvx_end

這個形式感覺有一些突兀,沒有第一種來得直觀
先看看誤差函數 f(w)=u2/(w+1)+M2w,u=βTxiyi,w>=0f(w)=u^2/(w+1)+M^2*w,u =\beta^Tx_i - y_i,w>=0

f(w)=M2u2/(w+1)2f'(w)=M^2 - u^2/(w + 1)^2

可以看到,當u<M,f(w)>0,f(w)|u|<M,f'(w)>0,f(w)單調遞增,因此極值在w=0w=0處得到,反之,取f(w)=0w=uM1f'(w)=0\Rightarrow w^*=\frac{|u|}{M}-1
因此帶入f(w)f(w)得到

f(w)={u2,u<=MM(2uM),u>Mf(w)=\left\{\begin{matrix} u^2 ,&|u| <= M \\ M(2|u| - M),& |u| > M \end{matrix}\right.
等價於huber函數
這裏需要說明的是
quad_over_lin(diag(A*x2-b),w’+1)的意思

Ax2bRm×1A*x2-b \in \mathbb{R}^{m \times 1}屬於向量,diagdiag將其轉爲對角矩陣,對應其對角元素。個人理解純粹是爲了quad_over_lin(x,y)計算

fquad_over_lin(x,y)={xTx/yy>0+y0 f_{\text{quad\_over\_lin}}(x,y) = \begin{cases} x^Tx/y & y > 0 \\ +\infty & y\leq 0 \end{cases}

©quadratic program

disp('Computing the solution of the quadratic program...');
cvx_begin
    variable x3(n)
    variable u(m)
    variable v(m)
    minimize( sum(square(u) +  2*M*v) )
    A*x3 - b <= u + v;
    A*x3 - b >= -u - v;
    u >= 0;
    u <= M;
    v >= 0;
cvx_end

目標值關於v,u的單調遞增的函數,因此u和v越小越好

假設有ti=AiTx3bit_i=|A_i^Tx_3 - b_i|,則有0<=ti<=ui+vi0<=t_i<=u_i+v_i
極值條件下,必有ui+vi=tiu_i+v_i=t_i
vi=tiui,vi>=0ui<=tiv_i = t_i-u_i,v_i>=0\Rightarrow u_i<=t_i
優化目標f(ui)=square(ui)+2Mvi)=ui22Mui+2Mtif(u_i)=square(u_i) + 2*M*v_i)=u_i^2-2Mu_i+2Mt_i

一階導得到f(ui)=2ui2Mf'(u_i)=2u_i-2M,由於0<=ui<=M|0|<=u_i<=M
ui<=Mu_i<=M目標單調遞減,目標的極值位置取決於t_i

ui={ti,ti<=MM,ti>Mu_i^*=\left\{\begin{matrix} |t_i| ,&t_i <= M \\ M,& t_i > M \end{matrix}\right.

相對應的
vi={0,ti<=MtiM,ti>Mv_i^*=\left\{\begin{matrix} 0 ,&t_i <= M \\ t_i-M,& t_i > M \end{matrix}\right.

將最優解帶入到優化目標種可以得到
f(uv)={ti2,ti<=MM(2tiM),ti>Mf(u,v)=\left\{\begin{matrix} t_i^2 ,&t_i <= M \\ M(2 t_i-M),& t_i > M \end{matrix}\right.

參考

http://web.cvxr.com/cvx/examples/cvxbook/Ch04_cvx_opt_probs/html/ex_4_5.html#source

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章