版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
MATLAB程式設(shè)計(jì)
曲線擬合與迴歸分析1精選2021版課件線性迴歸:曲線擬合
曲線擬合(CurveFitting)
建立的數(shù)學(xué)模型是「單輸入、單輸出」(Single-inputSingle-output,簡(jiǎn)稱SISO)其特性可用一條曲線來(lái)表示在資料分析上都稱為迴歸分析(RegressionAnalysis),或稱為資料擬合(DataFitting)迴歸分析與所使用的數(shù)學(xué)模型有很大的關(guān)係模型是線性模型,則此類問(wèn)題稱為線性迴歸(LinearRegression)模型是非線性模型,則稱為非線性迴歸(NonlinearRegression)。2精選2021版課件觀察資料是美國(guó)自1790至1990年(以10年為一單位)的總?cè)丝冢速Y料可由載入檔案census.mat得到範(fàn)例10-1:censusPlot01.m線性迴歸:曲線擬合loadcensus.mat %載入人口資料plot(cdate,pop,'o'); %cdate代表年度,pop代表人口總數(shù)xlabel('年度');ylabel('美國(guó)人口總數(shù)');3精選2021版課件上圖資料點(diǎn)走勢(shì),通過(guò)這些點(diǎn)的曲線可能是二次拋物線,假設(shè)為其中y為輸出,x為輸入,、及則為此模型的參數(shù)。參數(shù)相對(duì)於y呈線性關(guān)係,所以此模型稱為「具有線性參數(shù)(Linear-in-the-parameters)」的模型。找出最好的參數(shù)值,使得模型輸出與實(shí)際資料越接近越好,此過(guò)程即稱為線性迴歸(LinearRegression)線性迴歸:曲線擬合
4精選2021版課件線性迴歸假設(shè)觀察資料可寫成,i=1~21。當(dāng)輸入為時(shí),實(shí)際輸出為。模型的預(yù)測(cè)值為平方誤差:總平方誤差是參數(shù)、
、
的函數(shù)則可表示如下:線性迴歸:曲線擬合5精選2021版課件求得參數(shù)、、的最佳值求出對(duì)、
、
的導(dǎo)式,令其為零,即可解出、
、
的最佳值。平方誤差
為、
、
的二次式導(dǎo)式、
及
為、
、
的一次式令上述導(dǎo)式為零之後,我們可以得到一組三元一次線性聯(lián)立方程式,就可以解出參數(shù)、
、
的最佳值。線性迴歸:曲線擬合6精選2021版課件假設(shè)
21個(gè)觀察點(diǎn)均通過(guò)此拋物線,將這
21個(gè)點(diǎn)帶入拋物線方程式,得到下列21個(gè)等式:亦可寫成其中、為已知,為未知向量。線性迴歸:曲線擬合7精選2021版課件上述21個(gè)方程式21個(gè)方程式,只有
3個(gè)未知數(shù)(
,所以通常不存在一組解來(lái)滿足這
21個(gè)方程式。在一般情況下,只能找到一組,使得等號(hào)兩邊的差異為最小,此差異可寫成
此即為前述的總平方誤差MATLAB提供一個(gè)簡(jiǎn)單方便的「左除」(\)指令,來(lái)解出最佳的線性迴歸:曲線擬合8精選2021版課件利用「左除」來(lái)算出最佳的
值,並同時(shí)畫出具有最小平方誤差的二次曲線範(fàn)例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ù)','預(yù)測(cè)人口數(shù)');xlabel('年度');ylabel('美國(guó)人口總數(shù)');9精選2021版課件線性迴歸:曲線擬合由上述範(fàn)例,我們可以找出最佳的因此具有最小平方誤差的拋物線可以寫成:10精選2021版課件提示左除的概念,可記憶如下:原先的方程式是A*theta=y,我們可將A移項(xiàng)至等號(hào)右邊,而得到theta=A\y。必須小心的是:原先A在乘式的第一項(xiàng),所以移到等號(hào)右邊後,A仍然必須是除式的第一項(xiàng)。若我們要解的方程式是theta*A=y,則同樣的概念可得到最小平方解theta=A/y。11精選2021版課件根據(jù)上拋物線數(shù)學(xué)模型,我們可以預(yù)測(cè)美國(guó)在
2000年的人口總數(shù)為:範(fàn)例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年美國(guó)人口線數(shù)預(yù)測(cè)值t=2010;pop2010=[1,t,t^2]*theta; %在
2010年美國(guó)人口線數(shù)預(yù)測(cè)值fprintf('美國(guó)人口在2000年的預(yù)測(cè)值
=%g(百萬(wàn)人)\n',pop2000);fprintf('美國(guó)人口在2010年的預(yù)測(cè)值
=%g(百萬(wàn)人)\n',pop2010);>>美國(guó)人口在2000年的預(yù)測(cè)值
=274.622(百萬(wàn)人)>>美國(guó)人口在2010年的預(yù)測(cè)值
=301.824(百萬(wàn)人)12精選2021版課件上述例子推廣,得到一個(gè)
n次多項(xiàng)式:利用多項(xiàng)式的數(shù)學(xué)模型來(lái)進(jìn)行曲線擬合,通稱為「多項(xiàng)式擬合(PolynomialFitting)」MATLAB提供了
polyfit指令來(lái)找出最佳參數(shù)線性迴歸:曲線擬合13精選2021版課件可以使用
polyval指令來(lái)計(jì)算多項(xiàng)式的值,程式碼更加簡(jiǎn)潔範(fàn)例10-4:census03.mpolyfit(cdate,pop,2)」中的
2代表用到的模型是
2次多項(xiàng)式loadcensus.mat %載入人口資料theta=polyfit(cdate,pop,2); %進(jìn)行二次多項(xiàng)式擬合,找出
theta值fprintf('2000年的預(yù)測(cè)值
=%g(百萬(wàn)人)\n',polyval(theta,2000));fprintf('2010年的預(yù)測(cè)值
=%g(百萬(wàn)人)\n',polyval(theta,2010));>>在2000年的預(yù)測(cè)值
=274.622(百萬(wàn)人)>>在2010年的預(yù)測(cè)值
=301.824(百萬(wàn)人)線性迴歸:曲線擬合14精選2021版課件線性迴歸的成功與否,與所選取的模型有很大的關(guān)係。模型所含的參數(shù)越多,平方誤差會(huì)越小。若參數(shù)個(gè)數(shù)等於資料點(diǎn)個(gè)數(shù),平方誤差會(huì)等於零,但這並不表示預(yù)測(cè)會(huì)最準(zhǔn),因?yàn)橘Y料點(diǎn)含有雜訊。完全吻合資料的模型亦代表此模型受雜訊的影響最大,預(yù)測(cè)之準(zhǔn)確度也會(huì)較差?!改P脱}雜度」(即可變參數(shù)的個(gè)數(shù))和「預(yù)測(cè)準(zhǔn)確度」是相互抗衡的兩個(gè)因素,線性迴歸:曲線擬合15精選2021版課件MATLAB下輸入「census」,可對(duì)
census資料進(jìn)行曲線擬合的結(jié)果,如下:上述圖形可以看出,當(dāng)多項(xiàng)式的次數(shù)越來(lái)越高時(shí),「外插」常會(huì)出現(xiàn)不可信的結(jié)果。這表示選用的模型參數(shù)太高,雖然誤差的平方和變小了,但是預(yù)測(cè)的可靠度也下降了。線性迴歸:曲線擬合16精選2021版課件「多輸入、單輸出」的線性迴歸數(shù)學(xué)模型寫成其中x為輸入,y為輸出,、、…、為此模型的參數(shù),,則是已知的函數(shù),稱為基底函數(shù)(BasisFunctions)所給的資料點(diǎn)為,稱為取樣資料(SampleData)或訓(xùn)練資料(TrainingData)。線性迴歸:曲面擬合17精選2021版課件將上述資料點(diǎn)帶入模型後可得:或可表示成矩陣格式:線性迴歸:曲面擬合18精選2021版課件由於(即資料點(diǎn)個(gè)數(shù)遠(yuǎn)大於可變參數(shù)個(gè)數(shù)),欲使上式成立,須加上一誤差向量
e:平方誤差則可寫成求的最佳值直接取
對(duì)
的偏微分,並令其等於零,即可得到一組n元一次的線性聯(lián)立方程式用矩陣運(yùn)算來(lái)表示,
的最佳值可表示成也可以使用
MATLAB的「左除」來(lái)算出
的最佳值,即。線性迴歸:曲面擬合19精選2021版課件理論上,最佳的
值為,但是
容易造成電腦內(nèi)部計(jì)算的誤差,MATLAB實(shí)際在計(jì)算「左除」時(shí),會(huì)依照矩陣A的特性而選用最佳的方法,因此可以得到較穩(wěn)定且正確的數(shù)值解。提示20精選2021版課件在MATLAB下輸入
peaks,可以畫出一個(gè)凹凸有致的曲面,如下:此函數(shù)的方程式如下:線性迴歸:曲面擬合21精選2021版課件在下列說(shuō)明中,假設(shè):數(shù)學(xué)模型的基底函數(shù)已知訓(xùn)練資料包含正規(guī)分佈的雜訊上述函數(shù)可寫成:其中我們假設(shè)、
和
是未知參數(shù),n則是平均為零、變異為1的正規(guī)分佈雜訊。線性迴歸:曲面擬合22精選2021版課件若要取得
100筆訓(xùn)練資料範(fàn)例10-5:peaks01.mrandn指令的使用即在加入正規(guī)分佈雜訊。上圖為我們收集到的訓(xùn)練資料,由於雜訊很大,所以和原先未帶雜訊的圖形差異很大。線性迴歸:曲面擬合pointNum=10;[xx,yy,zz]=peaks(pointNum);zz=zz+randn(size(zz)); %加入雜訊
surf(xx,yy,zz);axistight23精選2021版課件現(xiàn)在我們要用已知的基底函數(shù),來(lái)找出最佳的、
和範(fàn)例10-6:peaks02.m由此找出的
值和最佳值
相當(dāng)接近。線性迴歸:曲面擬合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=A\z %最佳的
theta值theta=3.0088-10.0148-0.292424精選2021版課件根據(jù)上求得之參數(shù),可以輸入較密的點(diǎn),得到迴歸後的曲面範(fàn)例10-7:peaks03.m線性迴歸:曲面擬合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=A\z; %最佳的
theta值 %畫出預(yù)測(cè)的曲面pointNum=31;[xx,yy]=meshgrid(linspace(-3,3,pointNum),linspace(-3,3,pointNum));25精選2021版課件在上圖中,我們猜對(duì)了基底函數(shù),因此得到非常好的曲面擬合。只要基底函數(shù)正確,而且雜訊是正規(guī)分佈,那麼當(dāng)資料點(diǎn)越來(lái)越多,上述的最小平方法就可以逼近參數(shù)的真正數(shù)值。線性迴歸:曲面擬合x(chóng)=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);axistight26精選2021版課件非線性迴歸(NonlinearRegression)是一個(gè)比較困難的問(wèn)題,原因如下:無(wú)法一次找到最佳解。無(wú)法保證能夠找到最佳解。須引用各種非線性最佳化的方法。各種相關(guān)數(shù)學(xué)性質(zhì)並不明顯。以數(shù)學(xué)來(lái)描述,假設(shè)所用的數(shù)學(xué)模型是其中
是輸入向量,
是可變非線性函數(shù),y是輸出變數(shù)??偲椒秸`差為非線性迴歸:使用fminsearch
27精選2021版課件用一般最佳化(Optimization)的方法,來(lái)找出
的最小值,例如梯度下降法(GradientDescent)Simplex下坡式搜尋(SimplexDownhillsearch)舉例來(lái)說(shuō),假設(shè)所用的數(shù)學(xué)模型為其中,
、為線性參數(shù),但λ1、λ2
為非線性參數(shù),則此模型為非線性總平方誤差可表示:欲找出使
為最小的
、、λ1及λ2,需將
E寫成一函式,並由其它最佳化的方法來(lái)求出此函式的最小值。非線性迴歸:使用fminsearch
28精選2021版課件假設(shè)此函式為
errorMeasure1.m,範(fàn)例10-8:errorMeasure01.m其中
theta是參數(shù)向量,包含了
、、λ1
及λ2,data則是觀察到的資料點(diǎn),傳回的值
則是總平方誤差。非線性迴歸:使用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指令範(fàn)例10-9:nonlinearFit01.m非線性迴歸:使用fminsearch
loaddata.txttheta0=[0000];tictheta=fminsearch(@errorMeasure1,theta0,[],data);fprintf('計(jì)算時(shí)間
=%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指令是一個(gè)使用
Simplex下坡式搜尋法(DownhillSimplexSearch)的最佳化方法,用來(lái)找出
errorMeasure1的極小值,並傳回theta的最佳值。非線性迴歸:使用fminsearch
計(jì)算時(shí)間
=0.03誤差平方和
=5.337871e-00131精選2021版課件上述方法把所有參數(shù)全部視為非線性參數(shù)?;斐煞▽⑸鲜龇椒ㄟM(jìn)一步改良,也就是將線性與非線性參數(shù)分開(kāi),各用不同的方法來(lái)處理。以上例而言,數(shù)學(xué)模型為:
、線性參數(shù):最小平方法,即「左除」或「\」λ1、λ2非線性參數(shù):
Simplex下坡式搜尋(即
fminsearch)混成法的好處是最小平方法能夠在非線性參數(shù)固定的情況下,一次找到最好的線性參數(shù)的值,因?yàn)樗褜た臻g的維度由
4降為
2最佳化會(huì)更有效率。非線性迴歸:使用混成法32精選2021版課件使用上述混成(Hybrid)的方法,函式
errorMeasure1須改寫成
errorMeasure2範(fàn)例10-10:errorMeasure2.mlambda是非線性參數(shù)向量,
data仍是觀察到的資料點(diǎn),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版課件欲用此混成法求出誤差平方和的最小值範(fàn)例10-11:nonlinearFit02.m非線性迴歸:使用混成法loaddata.txtlambda0=[00];ticlambda=fminsearch(@errorMeasure2,lambda0,[],data);fprintf('計(jì)算時(shí)間
=%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)生較低的誤差平方和,同時(shí)所需的計(jì)算時(shí)間也比較短。非線性迴歸:使用混成法計(jì)算時(shí)間
=0.02誤差平方和
=1.477226e-00135精選2021版課件亦可利用變形法(Transformation),將一數(shù)學(xué)模型轉(zhuǎn)換成只包含線性參數(shù)的模型。假設(shè)一模型為:取自然對(duì)數(shù),可得:
lna及l(fā)nb變成線性參數(shù),我們可用“最小平方法”找出其值範(fàn)例10-12:transformFit01.m非線性迴歸:使用變形法loaddata2.txtx=data2(:,1); %已知資料點(diǎn)的
x座標(biāo)y=data2(:,2); %已知資料點(diǎn)的
y座標(biāo)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í)得到之參數(shù)b=theta(2) %辨識(shí)得到之參數(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版課件第一個(gè)小圖是ln(y)對(duì)x的作圖,第二個(gè)小則是y對(duì)x的作圖。經(jīng)由變形法之後,此最小平方法所得到的最小總平方誤差是而不是原模型的總平方誤差:通常E’為最小值時(shí),E不一定是最小值,但亦離最小值不遠(yuǎn)矣!非線性迴歸:使用變形法38精選2021版課件若要求取E的最小值,可再用
fminsearch,並以最小平方法得到的
a及
b為搜尋的起點(diǎn)範(fàn)例10-13:transformFit02.m非線性迴歸:使用變形法loaddata2.txtx=data2(:,1); %已知資料點(diǎn)的
x座標(biāo)y=data2(:,2); %已知資料點(diǎn)的
y座標(biāo)A=[ones(size(x))x];theta=A\log(y);a=exp(theta(1)) %辨識(shí)得到之參數(shù)b=theta(2) %辨識(shí)得到之參數(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中數(shù)學(xué) 第2章 統(tǒng)計(jì) 2.2 總體分布的估計(jì) 2.2.1 頻率分布表教案 蘇教版必修3
- 2024八年級(jí)英語(yǔ)下冊(cè) Unit 3 Animals Are Our FriendsLesson 14 Amazing Animals教案(新版)冀教版
- 2024年中國(guó)與某國(guó)農(nóng)產(chǎn)品采購(gòu)與銷售合同
- 2024城市環(huán)衛(wèi)項(xiàng)目渣土運(yùn)輸服務(wù)合同
- 2024年工程進(jìn)度延期合同
- 2024企業(yè)廣告投放與代理合同
- 2024年4S店購(gòu)車預(yù)訂合同樣式與填寫指南
- 2024個(gè)人借款合同
- 2024年公路綠化工程苗木移栽合同
- 2023年中電信人工智能科技有限公司招聘考試真題
- 前程無(wú)憂行測(cè)題庫(kù)
- 職業(yè)院?!敖鹫n”建設(shè)方案
- 人教版2024年新版七年級(jí)上冊(cè)英語(yǔ)Unit 3 模擬測(cè)試卷(含答案)
- 2023廣西玉林市北流市殘疾人聯(lián)合會(huì)招聘鎮(zhèn)(街道)社區(qū)殘疾人專職委員聘用前筆試歷年典型考題及考點(diǎn)剖析附答案帶詳解
- 金融借款合同糾紛代理解決方案
- 廚房廢油回收合同
- 浙教版(2023)五下信息科技第1課《身邊的系統(tǒng)》教學(xué)設(shè)計(jì)
- 《特殊兒童個(gè)別化教育方案設(shè)計(jì)與指導(dǎo)的研究》課題報(bào)告
- 2024年西安陜鼓動(dòng)力股份有限公司招聘筆試沖刺題(帶答案解析)
- MOOC 行政管理學(xué)-西北大學(xué) 中國(guó)大學(xué)慕課答案
- 藝術(shù)中國(guó)智慧樹(shù)知到期末考試答案2024年
評(píng)論
0/150
提交評(píng)論