數學建模中擬合演算法那些事 上

2021-10-06 05:39:35 字數 1671 閱讀 8281

插值演算法和擬合演算法的區別:

插值演算法:得到的多項式f(x)要經過所有樣本點.

擬合演算法:得到的多項式不一定經過每乙個樣本點,但只要保證誤差足夠小即可.

擬合演算法用到了最小二乘法,首先來對最小二乘法做個解釋(清風老師講解和自己理解)

最小二乘法:設一些樣本點為(xi,yi),其中i=1,2,3,…n 我們設定擬合曲線為y=kx+b.要使得誤差足夠小,只需要保證有特定的k和b的取值,來使得樣本點和擬合曲線最接近.

上圖是老師給出的定義.

1.首先說說**為什麼取最小值,**這也是基於擬合演算法的定義來說,可以不經過樣本所有點,但是要保證誤差最小,樣本和擬合曲線最接近當從幾何方面說到數學層面時,就是要y=kx+b中實際的y和計算出來的y^差之間最小.

2.一般使用第二種定義,原因在此.第一種有絕對值,不容易求導,計算比較複雜.第二種求導相對簡單,適合應用,這也是為啥叫最小二乘.

3.平方可以,三次方,四次方可以嗎?

首先三次方有正負之分,會對y差值之間的和相加有影響.四次方理論也可以,但是會造成個別點偏離過多對擬合曲線影響太大,而且不好求導,所以我們一般使用二次方.

對上式進行變化可得下式:

(l在機器學習中被稱作損失函式,在回歸中常常被稱作殘差平方和)

下圖為使得k,b最小,對k,b的推導.

涉及到的建模**:

k = (n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x))

b = (sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))

注意點乘

在此處再講解乙個東西r的平方(擬合優度也叫作可決係數)

涉及到的一些**:

y_hat = k*x+b; % y的擬合值    mean為取平均值作用

ssr = sum((y_hat-mean(y)).^2) % 回歸平方和

sse = sum((y_hat-y).^2) % 誤差平方和

sst = sum((y-mean(y)).^2) % 總體平方和

sst-sse-ssr % 5.6843e-14 = 5.6843*10^-14 matlab浮點數計算的乙個誤差

r_2 = ssr / sst

這裡的線性有兩種解釋:對引數為線性對變數為線性思考:y=a+bx^2是線性函式嗎?

答案:如果是對引數為線性的話就是,如果是對變數為線性則不是.

而我們擬合演算法中說到的線性是對引數為線性,此處應該特別注意.

(ab,a^2這樣的都不是線性,注意指數函式是可以的)

建模演算法筆記 擬合演算法

在插值演算法中,樣本點太多,那麼多項式的次數過高,會造成龍格現象。儘管可以用分段避免,但我們更想要獲得一條確定的曲線,即使這條曲線不能經過每乙個樣本點,但只要保證誤差足夠小就可以。arg是引數的縮寫,argmin是引數使得 裡面的最小 第一種 絕對值,可以變成第二種 二次方 1 但為什麼不是三次方,...

數學建模之擬合演算法理論筆記

插值與擬合的差別 插值演算法中,得到的多項式f x 要經過所有樣本點。但是如果樣本點太多,那麼這個多項式次數過高,會造成龍格現象。儘管我們可以選擇分段的方法避免這種現象,但是更多時候我們傾向於得到乙個確定的曲線,儘管這條曲線不能經過每乙個樣本點,但是只要保證誤差足夠小即可。擬合演算法 與插值演算法不...

數學建模 擬合演算法以及Python的三種實現方法

擬合與插值的區別 插值演算法中,得到的多項式f x f x f x 要經過所有樣本點。但是如果樣本點太多,那 麼這個多項式次數過高,會造成龍格現象。儘管我們可以選擇分段的方法避免這種現象,但是更多時候我們更傾向於得到 乙個確定的曲線,儘管這條曲線不能經過每乙個樣本點,但只要保證誤差足夠小即 可,這就...