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