曲線擬合與回歸分析PPT課件_第1頁
曲線擬合與回歸分析PPT課件_第2頁
曲線擬合與回歸分析PPT課件_第3頁
曲線擬合與回歸分析PPT課件_第4頁
曲線擬合與回歸分析PPT課件_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

.,1,MATLAB程式設計進階篇曲線擬合與迴歸分析,張智星(RogerJang)/jang清大資工系多媒體檢索實驗室,.,2,資料擬和簡介,資料擬合(DataFitting)給定一組資料(含輸入及輸出),建立一個數(shù)學模型,來逼近此資料的輸入輸出特性如果此資料包含一維輸入及輸出,則此數(shù)學模型可以表示成一條曲線,在此情況下又稱為曲線擬合(CurveFitting)迴歸分析(RegressionAnalysis)使用統(tǒng)計的方法來進行資料擬和,並分析每一個變數(shù)的統(tǒng)計特性,此過程稱為迴歸分析,.,3,曲線擬合簡介,曲線擬合(CurveFitting)欲建立的數(shù)學模型是單輸入、單輸出(Single-inputSingle-output,簡稱SISO),其特性可用一條曲線來表示迴歸分析之分類若模型是線性模型,則此類問題稱為線性迴歸(LinearRegression)若模型是非線性模型,則稱為非線性迴歸(NonlinearRegression)。,.,4,觀察資料是美國自1790至1990年(以10年為一單位)的總?cè)丝?,此資料可由載入檔案census.mat得到:範例10-1:censusPlot01.m,曲線擬合:美國人口範例,loadcensus.mat%載入人口資料plot(cdate,pop,o);%cdate代表年度,pop代表人口總數(shù)xlabel(年度);ylabel(美國人口總數(shù));,.,5,模型選取由上圖資料分佈,可猜測這適合的曲線可能是二次拋物線其中y為輸出,x為輸入,則為此模型的參數(shù)。由於參數(shù)相對於y呈線性關(guān)係,所以此模型為稱線性模型目標找出最好的參數(shù)值,使得模型輸出與實際資料越接近越好,此過程即稱為線性迴歸,曲線擬合之模型選取,.,6,曲線擬和的平方誤差假設觀察資料可寫成,i=121。當輸入為時,實際輸出為。模型的預測值為平方誤差:總平方誤差是參數(shù)的函數(shù),這也是我們要最小化的目標函數(shù),可表示如下:,曲線擬合之目標函數(shù),.,7,求得參數(shù)、的最佳值求出對、的導式,令其為零,即可解出、的最佳值??偲椒秸`差為的二次式導式、及為的一次式令上述導式為零之後,我們可以得到一組三元一次線性聯(lián)立方程式,就可以解出參數(shù)、的最佳值。,目標函數(shù)之求解,.,8,假設21個觀察點均通過此拋物線,將這21個點帶入拋物線方程式,得到下列21個等式:亦可寫成其中、為已知,為未知向量。,矩陣表示法,.,9,觀察上述21個方程式,只有3個未知數(shù),所以通常不存在一組解來滿足這21個方程式。在一般情況下,只能找到一組,使得等號兩邊的差異為最小,此差異可寫成此即為前述的總平方誤差MATLAB提供一個簡單方便的左除()指令,來解出最佳的,使得總平方誤差為最小。,MATLAB的最小平方解,.,10,利用左除來算出最佳的參數(shù)值,並同時畫出具有最小平方誤差的二次曲線範例10-2:census01.m,曲線擬合運算範例,loadcensus.mat%載入人口資料plot(cdate,pop,o);%cdate代表年度,pop代表人口總數(shù)A=ones(size(cdate),cdate,cdate.2;y=pop;theta=Ay;%利用左除,找出最佳的theta值plot(cdate,pop,o,cdate,A*theta,-);legend(實際人口數(shù),預測人口數(shù));xlabel(年度);ylabel(美國人口總數(shù));,.,11,曲線擬合結(jié)果,由上述範例,我們可以找出最佳的因此具有最小平方誤差的拋物線可以寫成:,.,12,提示:左除及右除,左除的概念,可記憶如下:原先的方程式是A*theta=y,我們可將A移項至等號右邊,而得到theta=Ay。必須小心的是:原先A在乘式的第一項,所以移到等號右邊後,A仍然必須是除式的第一項。若我們要解的方程式是theta*A=y,則同樣的概念可得到最小平方解theta=y/A。,.,13,根據(jù)上拋物線數(shù)學模型,我們可以預測美國在2000年的人口總數(shù)為:範例10-3:census02.m,以模型預測人口總數(shù),loadcensus.mat%載入人口資料A=ones(size(cdate),cdate,cdate.2;theta=Apop;%利用左除,找出最佳的theta值t=2000;pop2000=1,t,t2*theta;%在2000年美國人口線數(shù)預測值t=2010;pop2010=1,t,t2*theta;%在2010年美國人口線數(shù)預測值fprintf(美國人口在2000年的預測值=%g(百萬人)n,pop2000);fprintf(美國人口在2010年的預測值=%g(百萬人)n,pop2010);,美國人口在2000年的預測值=274.622(百萬人)美國人口在2010年的預測值=301.824(百萬人),.,14,上述例子推廣,得到一個n次多項式:利用多項式的數(shù)學模型來進行曲線擬合,通稱為多項式擬合(PolynomialFitting)由於多項式擬和的應用面很廣,MATLAB提供polyfit指令來找出多項式最佳參數(shù)Polyval指令來進行多項式的求值,多項式擬和,.,15,使用polyfit%進行二次多項式擬合,找出theta值fprintf(2000年的預測值=%g(百萬人)n,polyval(theta,2000);fprintf(2010年的預測值=%g(百萬人)n,polyval(theta,2010);,在2000年的預測值=274.622(百萬人)在2010年的預測值=301.824(百萬人),使用polyfitxx,yy,zz=peaks(pointNum);zz=zz+randn(size(zz);%加入雜訊surf(xx,yy,zz);axistight,.,25,現(xiàn)在我們要用已知的基底函數(shù),來找出最佳的、和範例10-6:peaks02.m由此找出的值和最佳值相當接近。,曲面擬合範例(4/6),pointNum=10;xx,yy,zz=peaks(pointNum);zz=zz+randn(size(zz)/10;%加入雜訊x=xx(:);%轉(zhuǎn)為行向量y=yy(:);%轉(zhuǎn)為行向量z=zz(:);%轉(zhuǎn)為行向量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=Az%最佳的theta值,theta=3.0088-10.0148-0.2924,.,26,根據(jù)上求得之參數(shù),可以輸入較密的點,得到迴歸後的曲面範例10-7:peaks03.m,曲面擬合範例(5/6),pointNum=10;xx,yy,zz=peaks(pointNum);zz=zz+randn(size(zz)/10;%加入雜訊x=xx(:);y=yy(:);z=zz(:);%轉(zhuǎn)為行向量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=Az;%最佳的theta值%畫出預測的曲面pointNum=31;xx,yy=meshgrid(linspace(-3,3,pointNum),linspace(-3,3,pointNum);,.,27,在上圖中,我們猜對了基底函數(shù),因此得到非常好的曲面擬合。只要基底函數(shù)正確,而且雜訊是正規(guī)分佈,那麼當資料點越來越多,上述的最小平方法就可以逼近參數(shù)的真正數(shù)值。,曲面擬合範例(6/6),x=xx(:);y=yy(:);%轉(zhuǎn)為行向量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);axistight,.,28,非線性迴歸(NonlinearRegression)是一個比較困難的問題,原因如下:無法一次找到最佳解。無法保證能夠找到最佳解。須引用各種非線性最佳化的方法。各種相關(guān)數(shù)學性質(zhì)並不明顯。以數(shù)學來描述,假設所用的數(shù)學模型是其中是輸入向量,是可變非線性函數(shù),y是輸出變數(shù)??偲椒秸`差為,非線性迴歸,.,29,用一般最佳化(Optimization)的方法,來找出的最小值,例如梯度下降法(GradientDescent)Simplex下坡式搜尋(SimplexDownhillsearch):此方法即為fminsearch指令所採用的方法假設所用的數(shù)學模型為其中、為線性參數(shù),但1、2為非線性參數(shù)總平方誤差可表示:欲找出使為最小的、1及2,需將E寫成一函式,並由其它最佳化的方法來求出此函式的最小值。,非線性迴歸:誤差值的最小化,.,30,我們使用errorMeasure1.m來計算誤差值範例10-8:errorMeasure01.m其中theta是參數(shù)向量,包含了、1及2,data則是觀察到的資料點,傳回的值則是總平方誤差。,使用fminsearch的範例(1/3),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);,.,31,欲求出的最小值,我們可使用fminsearch指令範例10-9:nonlinearFit01.m,使用fminsearch的範例(2/3),loaddata.txttheta0=0000;tictheta=fminsearch(errorMeasure1,theta0,data);fprintf(計算時間=%gn,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(誤差平方和=%dn,sum(y-y2).2);,.,32,上圖的曲線為fminsearch指令產(chǎn)生的迴歸曲線。fminsearch指令是一個使用Simplex下坡式搜尋法(DownhillSimplexSearch)的最佳化方法,用來找出errorMeasure1的極小值,並傳回theta的最佳值。,使用fminsearch的範例(3/3),計算時間=0.03誤差平方和=5.337871e-001,.,33,改良方向上述方法把所有參數(shù)全部視為非線性參數(shù)?;斐煞▽⒕€性與非線性參數(shù)分開,各用不同的方法來處理。上例數(shù)學模型為、線性參數(shù):最小平方法,即左除或1、2非線性參數(shù):Simplex下坡式搜尋(即fminsearch)混成法的優(yōu)點最小平方法能夠在非線性參數(shù)固定的情況下,一次找到最好的線性參數(shù)的值,因為搜尋空間的維度由4降為2,最佳化會更有效率,上述範例的改良,.,34,使用上述混成(Hybrid)的方法,函式errorMeasure1須改寫成errorMeasure2範例10-10:errorMeasure2.mlambda是非線性參數(shù)向量,data仍是觀察到的資料點,a是利用最小平方法算出的最佳線性參數(shù)向量,傳回的squareError仍是總平方誤差,混成法範例(1/3),functionsquaredError=errorMeasure2(lambda,data)x=data(:,1);y=data(:,2);A=exp(lambda(1)*x)exp(lambda(2)*x);a=Ay;y2=a(1)*exp(lambda(1)*x)+a(2)*exp(lambda(2)*x);squaredError=sum(y-y2).2);,.,35,欲用此混成法求出誤差平方和的最小值範例10-11:nonlinearFit02.m,混成法範例(2/3),loaddata.txtlambda0=00;ticlambda=fminsearch(errorMeasure2,lambda0,data);fprintf(計算時間=%gn,toc);x=data(:,1);y=data(:,2);A=exp(lambda(1)*x)exp(lambda(2)*x);a=Ay;y2=A*a;plot(x,y,ro,x,y2,b-);legend(Sampledata,Regressioncurve);fprintf(誤差平方和=%dn,sum(y-y2).2);,.,36,此種混成法可以產(chǎn)生較低的誤差平方和,同時所需的計算時間也比較短。,混成法範例(3/3),計算時間=0.02誤差平方和=1.477226e-001,.,37,我們亦可利用變形法(Transformation),將一數(shù)學模型轉(zhuǎn)換成只包含線性參數(shù)的模型。假設一模型為:取自然對數(shù),可得:ln(a)及b成為線性參數(shù),我們即可用最小平方法找出其最佳值範例10-12:transformFit01.m,變形法,loaddata2.txtx=data2(:,1);%已知資料點的x座標y=data2(:,2);%已知資料點的y座標A=ones(size(x)x;,.,38,a=4.3282b=-1.8235誤差平方和=8.744185e-001,變形法範例(1/2),theta=Alog(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(誤差平方和=%dn,sum(y-y2).2);,.,39,第一個小圖是ln(y)對x的作圖,第二個小則是y對x的作圖。經(jīng)由變形法之後,此最小平方法所得到的最小總平方誤差是而不是原模型的總平方誤差:通常E為最小值時,E不一定是最小值,但亦離最小值不遠矣!,變形法範例(2/2),.,40,若要求取原始E的最小值,可再用fminsearch,並以變形法得到的a及b為搜尋的起點範例10-13:transformFit02.m,變形法之改進範例(1/2),loaddata2.txtx=data2(:,1);%已知資料點的x座標y=data2(:,2);%已知資料點的y座標A=ones(size(x)x;theta=Alog(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);,.,41,誤差平方和=1.680455e-001,變形法之改進範例(2/2),plot(x,y,o,x,y2);xlabel(x);ylabel(y);legend(Actualvalue,Predictedvalue);title(yvs.x);fprintf(誤差平方和=%dn,sum(y-y2).2);,由上述範例可以看出,我們可以先使用變形法,先找出大略的參數(shù)值,再用fminsearch來對誤差平方和進行最小化,因此得到的誤差平方和,比只用變形法還要小。,.,42,以下是一些變形法可用的非線性模型,以及相關(guān)的轉(zhuǎn)換方法:,可使用變形法的數(shù)學模型(1/3),.,43,可使用變形法的數(shù)學模型(2/3),.,44,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論