1. 程式人生 > >最小二乘法詳解(線性擬合與非線性擬合)

最小二乘法詳解(線性擬合與非線性擬合)



         監督學習中,如果預測的變數是離散的,我們稱其為分類(如決策樹,支援向量機等),如果預測的變數是連續的,我們稱其為迴歸。迴歸分析中,如果只包括一個自變數和一個因變數,且二者的關係可用一條直線近似表示,這種迴歸分析稱為一元線性迴歸分析。如果迴歸分析中包括兩個或兩個以上的自變數,且因變數和自變數之間是線性關係,則稱為多元線性迴歸分析。對於二維空間線性是一條直線;對於三維空間線性是一個平面,對於多維空間線性是一個超平面.

  對於一元線性迴歸模型,引數估計採用最小二乘法:

       最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配。利用最小二乘法可以簡便地求得未知的資料,並使得這些求得的資料與實際資料之間誤差的平方和為最小。最小二乘法還可用於

曲線擬合

      曲線擬合分為線性擬合與非線性擬合其他一些優化問題也可通過最小化能量或最大化熵用最小二乘法來表達。

非線性擬合

講解[a,Jm]=lsqcurvefit(fun,a0,x,y)(最好舉例)各個符號的意思

非線性曲線擬合是已知輸入向量xdata和輸出向量ydata,並且知道輸入與輸出的函式關係為ydata=F(x, xdata),但不知道係數向量x。今進行曲線擬合,求x使得輸出的如下最小二乘表示式成立:
min Σ(F(x,xdatai)-ydatai)^2

函式  lsqcurvefit
格式  x = lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
[x,resnorm] = lsqcurvefit(…)
[x,resnorm,residual] = lsqcurvefit(…)
[x,resnorm,residual,exitflag] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(…)
引數說明:
x0為初始解向量;xdata,ydata為滿足關係ydata=F(x, xdata)的資料;
lb、ub為解向量的下界和上界lb≤x≤ub,若沒有指定界,則lb=[ ],ub=[ ];
options為指定的優化引數;
fun為待擬合函式,計算x處擬合函式值,其定義為     function F = myfun(x,xdata)
resnorm=sum ((fun(x,xdata)-ydata).^2),即在x處殘差的平方和;
residual=fun(x,xdata)-ydata,即在x處的殘差;
exitflag為終止迭代的條件;
output為輸出的優化資訊;
lambda為解x處的Lagrange乘子;
jacobian為解x處擬合函式fun的jacobian矩陣。

例 求解如下最小二乘非線性擬合問題
已知輸入向量xdata和輸出向量ydata,且長度都是n,待擬合函式的表示式為
ydata(i)=x(1)-xdata(i)^2+x(2)-sin(xdata(i))+x(3)-xdata^3

即目標函式為min Σ(F(x,xdata(i))-ydata(i))^2
其中:F(x,xdata) = x(1)*xdata^2 + x(2)*sin(xdata) + x(3)*xdata^3
初始解向量為x0=[0.3, 0.4, 0.1],即表示式的 個引數[x(1),x(2),x(3)]。
解:先建立擬合函式檔案,並儲存為myfun.m
function F = myfun(x,xdata)
F = x(1)*xdata.^2 + x(2)*sin(xdata) + x(3)*xdata.^3;
然後給出資料xdata和ydata
>>xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];
>>ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];
>>x0 = [10, 10, 10];    %初始估計值
>>[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)
結果為:
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
x = 0.2269    0.3385    0.3021
=>即解出的係數最優估計值
resnorm =      6.2950
=>在x解值處的目標最小二乘表示式值。即所謂殘差。

殘差是指觀測值與預測值(擬合值)之間的差,即是實際觀察值與迴歸估計值的差。