對最小二乘法擬合曲線的簡單說明


平時日常的生活工作中,會產生一些數據集,這些數據或是關於時間的變量(基於時間的序列),或者是關於多個自變量(由多個因素影響)的多元函數。在數學上為了建立能較為准確地描述這種函數關系的模型。往往會用到一種較為直觀的方法,即圖表法,即繪制出自變量的圖。

1.理論

1.1最小二乘法

 

首先,這個式子就是最小二乘法的數學表達,這個式子的表示我們選取的模型得到的y的預測值,則是真實值。使得所有的兩者之差的平方和最小,即可認為是所有預測值偏離真實值的程度最小。(事實上可證明最小二乘法得到的是真實值的無偏估計,但是方差並不一定是最小的,還有很多優化的措施)

1.2多元線性回歸

本文旨在介紹一下擬合未知數據集曲線的一種方法,即最小二乘法。由於線性回歸是大多數非線性回歸的基礎,先從線性回歸講起。或許在以前大家知道最小二乘法在擬合一元線性方程(即)的應用。那時得出來的公式如下:

但是總的來說這個公式不具備普適性,比如y要是和x1還有x2都有關聯(即),這個公式就不適用了。接下來推導最小二乘法下的多元線性回歸公式,(涉及高等數學和線性代數)

假設有一組因變量,且y滿足線性關系

 

由於隨機誤差無法量化,故在計算中只需計算f(x)部分。由兩者關聯得到:

 

 

將此式子化為矩陣形式得到矩陣形式

w即是所要求的的各個自變量前的系數組成的行向量(a,b,c,...等等)。接下來求其最小值,則使矩陣式子關於向量w的偏導為0即可。

即可通過以下符號解來求解線性方程組的最優參數。

(其實有些小缺陷,就是當矩陣不滿秩時無法求逆,當然是有解決辦法的,但這里不再贅述)

1.3非線性函數求解未知參數的方法

剛剛介紹了線性回歸里求解模型參數的方法,接下來進入非線性的參數求解。舉個例子,我已經確定我的模型為,這個明顯是個非線性函數,是個有兩個未知常數的指數模型。那么現在有了一堆數據點((x1,y1)(x2,y2)(x3,y3...)我如何求解最小二乘法下的ab的值呢?

引入梯度下降法的概念,梯度grad=是一個對函數f每一個自變量求偏導得到的向量。方向導數描述了多元函數在某個方向上的上升趨勢,而梯度方向是上升最快的方向,那么取梯度的反方向即當前下降最快的方向。故梯度下降法的迭代式為

(ɑ為步長),它是一種通過反復迭代來求解函數的局部最優解的方法,一般用在凸函數的最優解求解過程中。故多元非線性函數,可以通過利用梯度下降法來求最小二乘構造的函數的最小值來求得參數。

 

2.應用

2.1簡單的曲線擬合

以下編程基於python2.7

就拿上面那個簡單的例子來說,
我先產生一個基於這個模型的散點,然后加上一個服從
N~0,1)正態分布的隨機噪聲。得到了以下散點:

 

黃色的散點為加上噪聲的數據,紅線為的曲線。這里我使用了一個簡單的方法(當然如果是一般情況,就要使用一些列優化方法了),使其可以轉化成線性回歸,(無法經過處理線性化的非線性函數使用梯度下降法即可)做以下處理:

等式兩邊取對數,得到,則可以根據(lnylnx)的線性關系通過來算出來參數ab經過計算,得到參數第一個即a,第二個即參數b,與真實結果a=0.5b=3.456近似。再接着畫出來擬合的曲線如圖,藍色即為擬合的曲線:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM