最小二乘法(Least Squares)在計算機中是一種用來求參數/最優化的方法(線性/非線性),wikipedia有較為詳細的解釋:http://en.wikipedia.org/wiki/Least_squares。
1)問題陳述:
The objective consists of adjusting the parameters of a model function to best fit a data set. A simple data set consists of n points (data pairs)
, i = 1, ..., n, where
is an independent variable and
is a dependent variable whose value is found by observation. The model function has the form
, where the m adjustable parameters are held in the vector
. The goal is to find the parameter values for the model which "best" fits the data. The least squares method finds its optimum when the sum, S, of squared residuals

is a minimum.
A residual is defined as the difference between the actual value of the dependent variable and the value predicted by the model.
.
2)背景:
Least Squares最早是用在天體運動學中,也就是用在了著名的發現谷神星的故事里——1801年,意大利天文學家朱賽普·皮亞齊發現了第一 顆小行星谷神星。經過40天的跟蹤觀測后,由於谷神星運行至太陽背后,使得皮亞齊失去了谷神星的位置。隨后全世界的科學家利用皮亞齊的觀測數據開始尋找谷神星,但是根據大多數人計算的結果來尋找谷神星都沒有結果。時年24歲的高斯也計算了谷神星的軌道。奧地利天文學家海因里希·奧爾伯斯根據高斯計算出來的軌道重新發現了谷神星。
3)如何測量谷神星位置?
為了理解最小二乘法的作用,我們不妨來模擬下高斯求解谷神星位置的大致過程,可以假設谷神星的運動軌跡符合以下線性方程:

當然行星運行軌跡的方程不會是這樣,但是不妨假設為這樣。
現在我們有三個參數β0、β1、β2,另外根據百科等描述,高斯當時拿到了三組觀測值,也就是(y1, x1)、(y2, x2)、(y3, x3),那么現在問題就變成了:利用觀測到的三組樣本去求解方程里三個參數的最優值,該如何求解?
高斯想到的是用最小二乘法,最小二乘法的基本公式其實就是殘差的平方和,為什么使用這個公式可以看下圖:

可以看出殘差平方的圖形是一個凹形曲線,極值點就是為0的時候,再看下更多維度的情況:

現在我們有三組觀測值來求解三個參數,且S = 0:


要求得三個參數β0、β1、β2,很容易想到要找出三個方程組,這樣才能求出對應個數的參數,如果我們計算各參數的偏導數,同時設偏導數為0,就能夠得到這樣的三個方程了。(因為在凹點處,斜率為0,也就是參數最優(在圖形底部)的時候
)
三組觀測值帶入到S中,再對S分別求三個參數的偏導后,則可以得到三個方程組,回顧一下代數:三個線性方程組求三個參數的方法叫做求解線性方程組,這種線性方程組往往都存在closed-form solution即閉合解、封閉解、解析解的,也就是有固定的解的形式,可以直接套用。
線性方程組求解的方法:http://jpkc.wuse.edu.cn/xxds/xxdsjpkc/Html/tongji/text/ch03/se03/right3_3_1.htm
也可以轉換為矩陣的方式來求解:http://www2.edu-edu.com.cn/lesson_crs78/self/j_4184/soft/ch0201.html
求出三個參數后,我們就可以根據時間等未知數來推測神谷星的位置y了。
學數學的時候往往不知道這些數學理論到底有什么用,通過這個例子可以看出數學的確是無處不在!
相關維基:
http://zh.wikipedia.org/zh/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95
http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)
4)非線性最小二乘法
在以上推測谷神星位置的方法中,我們假設了一個線性函數,並通過對各參數偏導的求解,得到對應個數的方程組,將問題轉換為線性方程組的求解問題,但是這只適用於線性函數,而實際使用中,例如許多機器學習算法中,我們使用和構造的函數並非線性函數,例如sigmoid函數:

因為是非線性的,導數通常是含有獨立變量的函數形式,是沒有解析解的,那遇到這種情況又該如何求解呢?
既然有線性方程組求解的方法,那自然就有非線性方程組求解方法,大牛們早就弄得透透的了。
這里記錄兩種方法,一種叫做梯度下降法,另一種叫做牛頓法,先給個直觀的圖來解釋,這兩種方法收斂的效果,如下圖所示:

紅色形似直線的路徑是使用梯度下降法收斂的效果,而綠色曲線是使用牛頓法收斂的效果圖,簡單的描述梯度下降法就是一階偏導,使用平面去切割每一步,而牛頓法是二階偏導,使用曲面去切割,是導數的導數,不但考慮哪一步下去最快,還考慮下去之后的加速度是否也快,能不能抄近道。
梯度下降法參考資料:
http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html
http://blog.csdn.net/acdreamers/article/details/27660519
牛頓法參考資料:
http://v.163.com/movie/2008/1/E/D/M6SGF6VB4_M6SGHKAED.html
http://blog.csdn.net/luoleicn/article/details/6527049
非線性最小二乘法維基地址:
http://en.wikipedia.org/wiki/Non-linear_least_squares
5)實際使用
最小二乘法在機器學習等領域有廣泛的應用,如果構造的是線性模型,就可以用線性解法,如果是非線性模型,則可以使用非線性的優化方法。
這就很好的給了實際使用以理論支撐,工程師只需要使用恰當的假設和模型,就可以利用各種完備的數學理論去求解模型,比自己動手寫各種ugly的規則要省事多了。
Andrew的機器學習課程中有關於房價預測的例子,其中就用到了最小二乘法,ESL一書中開篇第二章就介紹了該方法,可見此方法在機器學習領域是基礎中的基礎,屬於必須要了解的部分。
轉載請注明引用自:
http://www.cnblogs.com/breakthings/p/4055700.html
