最小二乘法—多項(xiàng)式擬合非線性函數(shù)

本章涉及到的知識(shí)點(diǎn)清單:

1、函數(shù)的近似表示—高次多項(xiàng)式

2、誤差函數(shù)—最小二乘法

3、引出案例函數(shù)曲線

4、目標(biāo)函數(shù)

5、優(yōu)化目標(biāo)函數(shù)

6、優(yōu)化目標(biāo)函數(shù)—梯度下降法

7、優(yōu)化目標(biāo)函數(shù)—求解線性方程組

8、python編程實(shí)現(xiàn)擬合曲線函數(shù)

9、結(jié)果分析

一、函數(shù)的近似表示—高次多項(xiàng)式

為了研究一些復(fù)雜的函數(shù),我們希望對函數(shù)自變量進(jìn)行有限的加、減、乘法三種算數(shù)運(yùn)算,便可以求出原函數(shù)值,因此我們通常使用高次多項(xiàng)式來近似表示函數(shù)

高次多項(xiàng)式近似表示f(x)

可以看到,我們可以用n階多項(xiàng)式的系數(shù)線性組合來近似表示f(x)

特別說明,由泰勒展開式可知,當(dāng)pn(x)的各階導(dǎo)數(shù)和f(x)的各階導(dǎo)數(shù)都相等,則f(x)和pn(x)的誤差只是(x-x0)^n的高階無窮小

泰勒公式

二、誤差函數(shù)—最小二乘法

我們用f(x)的真實(shí)函數(shù)值減去多項(xiàng)式函數(shù)的結(jié)果的平方,來表示f(x)和多項(xiàng)式函數(shù)的誤差關(guān)系,即

最小二乘法表示誤差

我們令x0=0,則最小二乘法表示的誤差為

最小二乘法表示誤差

三、引出案例函數(shù)曲線

有了上述數(shù)學(xué)知識(shí),下面我們用一個(gè)案例來介紹最小二乘法擬合非線性函數(shù)的算法步驟

案例:求一個(gè)多項(xiàng)式來擬合下列函數(shù)的函數(shù)值

案例函數(shù)

其中我們加入了噪點(diǎn)數(shù)據(jù)noise,使得函數(shù)在定義域內(nèi)隨機(jī)的震蕩

我們畫出f(x)在[-1, 1]之間的圖像,即

案例函數(shù)圖像

案例問題即為:已知上述N個(gè)數(shù)據(jù)點(diǎn),求其函數(shù)f(x)的表達(dá)式?

顯然,f(x)也就是機(jī)器學(xué)習(xí)要學(xué)習(xí)的目標(biāo)

四、目標(biāo)函數(shù)

下面我們開始推導(dǎo)機(jī)器學(xué)習(xí)的過程

機(jī)器學(xué)習(xí)的目標(biāo)為:

(1)?學(xué)習(xí)一個(gè)f(x)多項(xiàng)式,可以擬合真實(shí)數(shù)據(jù)的變化趨勢

(2)f(x)的目標(biāo):使每一個(gè)真實(shí)數(shù)值到f(x)的擬合數(shù)值的距離之和最小

翻譯為數(shù)學(xué)語言,即

學(xué)習(xí)到的f(x)
目標(biāo)函數(shù)

五、優(yōu)化目標(biāo)函數(shù)

為了使目標(biāo)函數(shù)最優(yōu),我們對每個(gè)系數(shù)求其偏導(dǎo)數(shù)為0,即

優(yōu)化目標(biāo)函數(shù)

至此,我們需要根據(jù)上述k的等式,求出所有的系數(shù)ak,有兩種方法可以求解

(1)梯度下降法

(2)求解線性方程

六、優(yōu)化目標(biāo)函數(shù)—梯度下降法

采用梯度下降法,可以避免我們用數(shù)學(xué)方法直接一步來求解上述k個(gè)方程的最優(yōu)解,而是采用迭代逼近最優(yōu)解的思路,其具體步驟為:

(1)初始化k個(gè)系數(shù)值,開始迭代

(2)每次迭代,分別求出各個(gè)系數(shù)ak對應(yīng)的梯度值

(3)用梯度值和學(xué)習(xí)率來更新每一個(gè)系數(shù)ak

(4)保證每次更新完所有系數(shù),對應(yīng)的損失函數(shù)值都在減少(說明梯度一直在下降)

翻譯為數(shù)學(xué)語言為:

計(jì)算ak對應(yīng)的梯度值

計(jì)算ak的梯度值

更新ak

更新ak

七、優(yōu)化目標(biāo)函數(shù)—求解線性方程組

求解線性方程組讓我們直接一步求出偏導(dǎo)數(shù)最優(yōu)解,其具體步驟為:

(1)將最優(yōu)化偏導(dǎo)數(shù)的方程組寫為矩陣乘法形式:XA=Y

(2)利用數(shù)學(xué)消元算法來求解XA=Y

我們對k個(gè)偏導(dǎo)數(shù)=0的等式進(jìn)行化簡處理,即

k個(gè)偏導(dǎo)數(shù)等式

下面我們將其寫為矩陣相乘的形式,將所有只含有x的系數(shù)寫為第一個(gè)矩陣X,即

含有x的系數(shù)矩陣

將只含有待求解的多項(xiàng)式系數(shù)ak寫為第二個(gè)矩陣A,即

含有a的系數(shù)矩陣

最后將含有y的系數(shù)寫為第三個(gè)矩陣Y,即

含有y的系數(shù)矩陣

此時(shí),我們就可以用矩陣的乘法來表示最初的k個(gè)偏導(dǎo)數(shù)為0的等式,即

k個(gè)偏導(dǎo)數(shù)等式的矩陣形式

注意:其中X是k*k的矩陣,A是k*1的矩陣,Y是k*1的矩陣,符合矩陣的乘法規(guī)則

從矩陣表達(dá)式可以看出,X和Y矩陣是已知的,A矩陣只包含待求解的f(x)的所有多項(xiàng)式系數(shù),則問題即轉(zhuǎn)化為線性方程組:XA=Y

求解線性方程組,大概有如下算法

(1)高斯消元法(全主元、列主消元)

(2)LU三角分解法

(3)雅克比迭代法

(4)逐次超松弛(SOR)迭代法

(5)高斯-賽德爾迭代法

這里我們采用高斯消元法來求解A,具體算法步驟較為復(fù)雜,我們在單獨(dú)的章節(jié)介紹高斯消元算法

八、python編程實(shí)現(xiàn)擬合曲線函數(shù)

生成帶有噪點(diǎn)的待擬合的數(shù)據(jù)集合

生成帶有噪點(diǎn)的待擬合的數(shù)據(jù)集合

計(jì)算最小二乘法當(dāng)前的誤差

計(jì)算最小二乘法當(dāng)前的誤差

迭代解法:最小二乘法+梯度下降法

迭代解法:最小二乘法+梯度下降法

數(shù)學(xué)解法:最小二乘法+求解線性方程組

數(shù)學(xué)解法:最小二乘法+求解線性方程組

九、結(jié)果分析

我們來擬合N=10次冪的多項(xiàng)式,分別用梯度下降法和求解線性方程組的算法來比較擬合結(jié)果

(1)使用梯度下降法來優(yōu)化目標(biāo)函數(shù),其擬合結(jié)果為:

梯度下降法擬合結(jié)果

其誤差變化為

梯度下降法優(yōu)化的誤差

(2)使用求解線性方程組來優(yōu)化目標(biāo)函數(shù),其擬合結(jié)果為:

求解線性方程組擬合結(jié)果

其誤差變化為

求解線性方程組優(yōu)化的誤差

比較上述兩種解法,以及多項(xiàng)式擬合的思想,我們可以總結(jié)出

(1)利用函數(shù)的近似多項(xiàng)式表示,和最小二乘法來表示目標(biāo)函數(shù),我們可以高效的擬合非線性函數(shù)

(2)梯度下降法可以一步步迭代逼近目標(biāo)函數(shù)的極值,而不用直接求出偏導(dǎo)數(shù)最優(yōu)解

(3)求解方程組,使用數(shù)學(xué)消元的算法,直接一步優(yōu)化完成了目標(biāo)函數(shù)的偏導(dǎo)數(shù)最優(yōu)解

(4)從結(jié)果上比較,求解方程組的效率和擬合結(jié)果要比梯度下降法好

案例代碼見:最小二乘法—多項(xiàng)式擬合非線性函數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容