




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MATLAB程式設計
曲線擬合與迴歸分析1精選2021版課件線性迴歸:曲線擬合
曲線擬合(CurveFitting)
建立的數(shù)學模型是「單輸入、單輸出」(Single-inputSingle-output,簡稱SISO)其特性可用一條曲線來表示在資料分析上都稱為迴歸分析(RegressionAnalysis),或稱為資料擬合(DataFitting)迴歸分析與所使用的數(shù)學模型有很大的關係模型是線性模型,則此類問題稱為線性迴歸(LinearRegression)模型是非線性模型,則稱為非線性迴歸(NonlinearRegression)。2精選2021版課件觀察資料是美國自1790至1990年(以10年為一單位)的總人口,此資料可由載入檔案census.mat得到範例10-1:censusPlot01.m線性迴歸:曲線擬合loadcensus.mat %載入人口資料plot(cdate,pop,'o'); %cdate代表年度,pop代表人口總數(shù)xlabel('年度');ylabel('美國人口總數(shù)');3精選2021版課件上圖資料點走勢,通過這些點的曲線可能是二次拋物線,假設為其中y為輸出,x為輸入,、及則為此模型的參數(shù)。參數(shù)相對於y呈線性關係,所以此模型稱為「具有線性參數(shù)(Linear-in-the-parameters)」的模型。找出最好的參數(shù)值,使得模型輸出與實際資料越接近越好,此過程即稱為線性迴歸(LinearRegression)線性迴歸:曲線擬合
4精選2021版課件線性迴歸假設觀察資料可寫成,i=1~21。當輸入為時,實際輸出為。模型的預測值為平方誤差:總平方誤差是參數(shù)、
、
的函數(shù)則可表示如下:線性迴歸:曲線擬合5精選2021版課件求得參數(shù)、、的最佳值求出對、
、
的導式,令其為零,即可解出、
、
的最佳值。平方誤差
為、
、
的二次式導式、
及
為、
、
的一次式令上述導式為零之後,我們可以得到一組三元一次線性聯(lián)立方程式,就可以解出參數(shù)、
、
的最佳值。線性迴歸:曲線擬合6精選2021版課件假設
21個觀察點均通過此拋物線,將這
21個點帶入拋物線方程式,得到下列21個等式:亦可寫成其中、為已知,為未知向量。線性迴歸:曲線擬合7精選2021版課件上述21個方程式21個方程式,只有
3個未知數(shù)(
,所以通常不存在一組解來滿足這
21個方程式。在一般情況下,只能找到一組,使得等號兩邊的差異為最小,此差異可寫成
此即為前述的總平方誤差MATLAB提供一個簡單方便的「左除」(\)指令,來解出最佳的線性迴歸:曲線擬合8精選2021版課件利用「左除」來算出最佳的
值,並同時畫出具有最小平方誤差的二次曲線範例10-2:census01.m線性迴歸:曲線擬合loadcensus.mat %載入人口資料plot(cdate,pop,'o'); %cdate代表年度,pop代表人口總數(shù)A=[ones(size(cdate)),cdate,cdate.^2];y=pop;theta=A\y; %利用「左除」,找出最佳的
theta值plot(cdate,pop,'o',cdate,A*theta,'-');legend('實際人口數(shù)','預測人口數(shù)');xlabel('年度');ylabel('美國人口總數(shù)');9精選2021版課件線性迴歸:曲線擬合由上述範例,我們可以找出最佳的因此具有最小平方誤差的拋物線可以寫成:10精選2021版課件提示左除的概念,可記憶如下:原先的方程式是A*theta=y,我們可將A移項至等號右邊,而得到theta=A\y。必須小心的是:原先A在乘式的第一項,所以移到等號右邊後,A仍然必須是除式的第一項。若我們要解的方程式是theta*A=y,則同樣的概念可得到最小平方解theta=A/y。11精選2021版課件根據(jù)上拋物線數(shù)學模型,我們可以預測美國在
2000年的人口總數(shù)為:範例10-3:census02.m線性迴歸:曲線擬合loadcensus.mat %載入人口資料A=[ones(size(cdate)),cdate,cdate.^2];theta=A\pop; %利用「左除」,找出最佳的
theta值t=2000;pop2000=[1,t,t^2]*theta; %在
2000年美國人口線數(shù)預測值t=2010;pop2010=[1,t,t^2]*theta; %在
2010年美國人口線數(shù)預測值fprintf('美國人口在2000年的預測值
=%g(百萬人)\n',pop2000);fprintf('美國人口在2010年的預測值
=%g(百萬人)\n',pop2010);>>美國人口在2000年的預測值
=274.622(百萬人)>>美國人口在2010年的預測值
=301.824(百萬人)12精選2021版課件上述例子推廣,得到一個
n次多項式:利用多項式的數(shù)學模型來進行曲線擬合,通稱為「多項式擬合(PolynomialFitting)」MATLAB提供了
polyfit指令來找出最佳參數(shù)線性迴歸:曲線擬合13精選2021版課件可以使用
polyval指令來計算多項式的值,程式碼更加簡潔範例10-4:census03.mpolyfit(cdate,pop,2)」中的
2代表用到的模型是
2次多項式loadcensus.mat %載入人口資料theta=polyfit(cdate,pop,2); %進行二次多項式擬合,找出
theta值fprintf('2000年的預測值
=%g(百萬人)\n',polyval(theta,2000));fprintf('2010年的預測值
=%g(百萬人)\n',polyval(theta,2010));>>在2000年的預測值
=274.622(百萬人)>>在2010年的預測值
=301.824(百萬人)線性迴歸:曲線擬合14精選2021版課件線性迴歸的成功與否,與所選取的模型有很大的關係。模型所含的參數(shù)越多,平方誤差會越小。若參數(shù)個數(shù)等於資料點個數(shù),平方誤差會等於零,但這並不表示預測會最準,因為資料點含有雜訊。完全吻合資料的模型亦代表此模型受雜訊的影響最大,預測之準確度也會較差?!改P脱}雜度」(即可變參數(shù)的個數(shù))和「預測準確度」是相互抗衡的兩個因素,線性迴歸:曲線擬合15精選2021版課件MATLAB下輸入「census」,可對
census資料進行曲線擬合的結果,如下:上述圖形可以看出,當多項式的次數(shù)越來越高時,「外插」常會出現(xiàn)不可信的結果。這表示選用的模型參數(shù)太高,雖然誤差的平方和變小了,但是預測的可靠度也下降了。線性迴歸:曲線擬合16精選2021版課件「多輸入、單輸出」的線性迴歸數(shù)學模型寫成其中x為輸入,y為輸出,、、…、為此模型的參數(shù),,則是已知的函數(shù),稱為基底函數(shù)(BasisFunctions)所給的資料點為,稱為取樣資料(SampleData)或訓練資料(TrainingData)。線性迴歸:曲面擬合17精選2021版課件將上述資料點帶入模型後可得:或可表示成矩陣格式:線性迴歸:曲面擬合18精選2021版課件由於(即資料點個數(shù)遠大於可變參數(shù)個數(shù)),欲使上式成立,須加上一誤差向量
e:平方誤差則可寫成求的最佳值直接取
對
的偏微分,並令其等於零,即可得到一組n元一次的線性聯(lián)立方程式用矩陣運算來表示,
的最佳值可表示成也可以使用
MATLAB的「左除」來算出
的最佳值,即。線性迴歸:曲面擬合19精選2021版課件理論上,最佳的
值為,但是
容易造成電腦內部計算的誤差,MATLAB實際在計算「左除」時,會依照矩陣A的特性而選用最佳的方法,因此可以得到較穩(wěn)定且正確的數(shù)值解。提示20精選2021版課件在MATLAB下輸入
peaks,可以畫出一個凹凸有致的曲面,如下:此函數(shù)的方程式如下:線性迴歸:曲面擬合21精選2021版課件在下列說明中,假設:數(shù)學模型的基底函數(shù)已知訓練資料包含正規(guī)分佈的雜訊上述函數(shù)可寫成:其中我們假設、
和
是未知參數(shù),n則是平均為零、變異為1的正規(guī)分佈雜訊。線性迴歸:曲面擬合22精選2021版課件若要取得
100筆訓練資料範例10-5:peaks01.mrandn指令的使用即在加入正規(guī)分佈雜訊。上圖為我們收集到的訓練資料,由於雜訊很大,所以和原先未帶雜訊的圖形差異很大。線性迴歸:曲面擬合pointNum=10;[xx,yy,zz]=peaks(pointNum);zz=zz+randn(size(zz)); %加入雜訊
surf(xx,yy,zz);axistight23精選2021版課件現(xiàn)在我們要用已知的基底函數(shù),來找出最佳的、
和範例10-6:peaks02.m由此找出的
值和最佳值
相當接近。線性迴歸:曲面擬合pointNum=10;[xx,yy,zz]=peaks(pointNum);zz=zz+randn(size(zz))/10; %加入雜訊x=xx(:); %轉為行向量y=yy(:); %轉為行向量z=zz(:); %轉為行向量A=[(1-x).^2.*exp(-(x.^2)-(y+1).^2),(x/5-x.^3-y.^5).*exp(-x.^2-y.^2),exp(-(x+1).^2-y.^2)];theta=A\z %最佳的
theta值theta=3.0088-10.0148-0.292424精選2021版課件根據(jù)上求得之參數(shù),可以輸入較密的點,得到迴歸後的曲面範例10-7:peaks03.m線性迴歸:曲面擬合pointNum=10;[xx,yy,zz]=peaks(pointNum);zz=zz+randn(size(zz))/10; %加入雜訊x=xx(:);y=yy(:);z=zz(:); %轉為行向量A=[(1-x).^2.*exp(-(x.^2)-(y+1).^2),(x/5-x.^3-y.^5).*exp(-x.^2-y.^2),exp(-(x+1).^2-y.^2)];theta=A\z; %最佳的
theta值 %畫出預測的曲面pointNum=31;[xx,yy]=meshgrid(linspace(-3,3,pointNum),linspace(-3,3,pointNum));25精選2021版課件在上圖中,我們猜對了基底函數(shù),因此得到非常好的曲面擬合。只要基底函數(shù)正確,而且雜訊是正規(guī)分佈,那麼當資料點越來越多,上述的最小平方法就可以逼近參數(shù)的真正數(shù)值。線性迴歸:曲面擬合x=xx(:);y=yy(:); %轉為行向量
A=[(1-x).^2.*exp(-(x.^2)-(y+1).^2),(x/5-x.^3-y.^5).*exp(-x.^2-y.^2),exp(-(x+1).^2-y.^2)];zz=reshape(A*theta,pointNum,pointNum);surf(xx,yy,zz);axistight26精選2021版課件非線性迴歸(NonlinearRegression)是一個比較困難的問題,原因如下:無法一次找到最佳解。無法保證能夠找到最佳解。須引用各種非線性最佳化的方法。各種相關數(shù)學性質並不明顯。以數(shù)學來描述,假設所用的數(shù)學模型是其中
是輸入向量,
是可變非線性函數(shù),y是輸出變數(shù)??偲椒秸`差為非線性迴歸:使用fminsearch
27精選2021版課件用一般最佳化(Optimization)的方法,來找出
的最小值,例如梯度下降法(GradientDescent)Simplex下坡式搜尋(SimplexDownhillsearch)舉例來說,假設所用的數(shù)學模型為其中,
、為線性參數(shù),但λ1、λ2
為非線性參數(shù),則此模型為非線性總平方誤差可表示:欲找出使
為最小的
、、λ1及λ2,需將
E寫成一函式,並由其它最佳化的方法來求出此函式的最小值。非線性迴歸:使用fminsearch
28精選2021版課件假設此函式為
errorMeasure1.m,範例10-8:errorMeasure01.m其中
theta是參數(shù)向量,包含了
、、λ1
及λ2,data則是觀察到的資料點,傳回的值
則是總平方誤差。非線性迴歸:使用fminsearch
functionsquaredError=errorMeasure1(theta,data)x=data(:,1);y=data(:,2);y2=theta(1)*exp(theta(3)*x)+theta(2)*exp(theta(4)*x);squaredError=sum((y-y2).^2);29精選2021版課件欲求出
的最小值,我們可使用
fminsearch指令範例10-9:nonlinearFit01.m非線性迴歸:使用fminsearch
loaddata.txttheta0=[0000];tictheta=fminsearch(@errorMeasure1,theta0,[],data);fprintf('計算時間
=%g\n',toc);x=data(:,1);y=data(:,2);y2=theta(1)*exp(theta(3)*x)+theta(2)*exp(theta(4)*x);plot(x,y,'ro',x,y2,'b-');legend('Sampledata','Regressioncurve');fprintf('誤差平方和
=%d\n',sum((y-y2).^2));30精選2021版課件上圖的曲線為
fminsearch指令產(chǎn)生的迴歸曲線。fminsearch指令是一個使用
Simplex下坡式搜尋法(DownhillSimplexSearch)的最佳化方法,用來找出
errorMeasure1的極小值,並傳回theta的最佳值。非線性迴歸:使用fminsearch
計算時間
=0.03誤差平方和
=5.337871e-00131精選2021版課件上述方法把所有參數(shù)全部視為非線性參數(shù)。混成法將上述方法進一步改良,也就是將線性與非線性參數(shù)分開,各用不同的方法來處理。以上例而言,數(shù)學模型為:
、線性參數(shù):最小平方法,即「左除」或「\」λ1、λ2非線性參數(shù):
Simplex下坡式搜尋(即
fminsearch)混成法的好處是最小平方法能夠在非線性參數(shù)固定的情況下,一次找到最好的線性參數(shù)的值,因為搜尋空間的維度由
4降為
2最佳化會更有效率。非線性迴歸:使用混成法32精選2021版課件使用上述混成(Hybrid)的方法,函式
errorMeasure1須改寫成
errorMeasure2範例10-10:errorMeasure2.mlambda是非線性參數(shù)向量,
data仍是觀察到的資料點,a是利用最小平方法算出的最佳線性參數(shù)向量,傳回的
squareError仍是總平方誤差非線性迴歸:使用混成法functionsquaredError=errorMeasure2(lambda,data)x=data(:,1);y=data(:,2);A=[exp(lambda(1)*x)exp(lambda(2)*x)];a=A\y;y2=a(1)*exp(lambda(1)*x)+a(2)*exp(lambda(2)*x);squaredError=sum((y-y2).^2);33精選2021版課件欲用此混成法求出誤差平方和的最小值範例10-11:nonlinearFit02.m非線性迴歸:使用混成法loaddata.txtlambda0=[00];ticlambda=fminsearch(@errorMeasure2,lambda0,[],data);fprintf('計算時間
=%g\n',toc);x=data(:,1);y=data(:,2);A=[exp(lambda(1)*x)exp(lambda(2)*x)];a=A\y;y2=a(1)*exp(lambda(1)*x)+a(2)*exp(lambda(2)*x);plot(x,y,'ro',x,y2,'b-');legend('Sampledata','Regressioncurve');fprintf('誤差平方和
=%d\n',sum((y-y2).^2));
34精選2021版課件此種混成法可以產(chǎn)生較低的誤差平方和,同時所需的計算時間也比較短。非線性迴歸:使用混成法計算時間
=0.02誤差平方和
=1.477226e-00135精選2021版課件亦可利用變形法(Transformation),將一數(shù)學模型轉換成只包含線性參數(shù)的模型。假設一模型為:取自然對數(shù),可得:
lna及l(fā)nb變成線性參數(shù),我們可用“最小平方法”找出其值範例10-12:transformFit01.m非線性迴歸:使用變形法loaddata2.txtx=data2(:,1); %已知資料點的
x座標y=data2(:,2); %已知資料點的
y座標A=[ones(size(x))x];36精選2021版課件a=4.3282b=-1.8235誤差平方和
=8.744185e-001非線性迴歸:使用變形法theta=A\log(y);subplot(2,1,1)plot(x,log(y),'o',x,A*theta);xlabel('x');ylabel('ln(y)');title('ln(y)vs.x');legend('Actualvalue','Predictedvalue');a=exp(theta(1)) %辨識得到之參數(shù)b=theta(2) %辨識得到之參數(shù)y2=a*exp(b*x);subplot(2,1,2);plot(x,y,'o',x,y2);xlabel('x');ylabel('y');legend('Actualvalue','Predictedvalue');title('yvs.x');fprintf('誤差平方和
=%d\n',sum((y-y2).^2));37精選2021版課件第一個小圖是ln(y)對x的作圖,第二個小則是y對x的作圖。經(jīng)由變形法之後,此最小平方法所得到的最小總平方誤差是而不是原模型的總平方誤差:通常E’為最小值時,E不一定是最小值,但亦離最小值不遠矣!非線性迴歸:使用變形法38精選2021版課件若要求取E的最小值,可再用
fminsearch,並以最小平方法得到的
a及
b為搜尋的起點範例10-13:transformFit02.m非線性迴歸:使用變形法loaddata2.txtx=data2(:,1); %已知資料點的
x座標y=data2(:,2); %已知資料點的
y座標A=[ones(size(x))x];theta=A\log(y);a=exp(theta(1)) %辨識得到之參數(shù)b=theta(2) %辨識得到之參數(shù)theta0=[a,b]; %fminsearch的啟始參數(shù)theta=fminsearch(@errorMeasure3,theta0,[],data2);x=data2(:,1);y=data2(:,2);y2=theta(1)*exp(theta(2)*x);39精選2021版課件誤差平方和
=1.680455e-001非線性迴歸:使用變形法plot(x,y,'o',x,y2);xlabel('x');ylabel('y');legend('Actualvalue','Predictedvalue');title('yvs.x');fprintf('誤差平方和
=%d\n',sum((y-y2).^2));
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 實戰(zhàn)網(wǎng)絡管理員考試試題及答案
- 軟件設計師考試動手實踐訓練方法試題及答案
- 激勵幼兒積極參與的活動設計計劃
- 跨學科整合品德教育的路徑計劃
- 云計算與網(wǎng)絡安全試題及答案
- 2024年上海海事大學輔導員考試真題
- 2024年江蘇省醫(yī)療保障局下屬事業(yè)單位真題
- 2024年紹興市科學技術局招聘筆試真題
- 2024年內江師范學院選調工作人員筆試真題
- 行政法學歷年試題及答案回顧
- 初學者必看-骨科讀片課件
- 空白教案模板(表格形式-已排版)
- 25Hz相敏軌道電路
- 銀行搶劫預案演練
- 質量工藝問題反饋單模板
- 2022-2023學年人教版選擇性必修3 3.4 第1課時 羧酸 學案
- 最全深圳市工改工案例分析
- 高邊坡施工危險源辨識及風險評價一覽表
- GB∕T 37821-2019 廢塑料再生利用技術規(guī)范
- 公共場所衛(wèi)生 可吸入顆粒物PM10 方法驗證報告
- 醫(yī)院景觀綠化施工組織計劃
評論
0/150
提交評論