在描述**模型準確程度有多種不同的方法:
(1)誤差和最小化。這種方法存在的問題是正負誤差會相互抵消,導致描述不準確。
(2)誤差絕對值最小化。這個方法在描述上面有問題,但是計算機上運算很複雜。
(3)誤差平方和最小化。這也是最小二乘法根本思想所在,不僅有效避免正負誤差抵消,而且運算上也簡單。
在字面上,我們將「最小二乘」拆分成兩個詞語,就是「最小」和「二乘」。其中,「二乘」指的就是以平方的方式來衡量**值與實際值之間的差異,也就是誤差平方。「最小」就好理解了,就是說**模型中各引數要使得**值與實際值之間的誤差平方和最小。
要說最小二乘法的定義,總結多方面資料,我認為分為兩派:
一類是廣義上的最小二乘法。這一類的最小二乘法泛指所有使用均方誤差和方法來衡量差異程度進而求最優值得方法,這一類方法並不關注如何求最優解,只要使用了均方誤差和作為目標函式,就演算法最小二乘法,從這種角度來說,最小二乘法是一種優化思想,而梯度下降法只是最小二乘法的乙個分支,一種具體實現。
另一派是狹義上的最小二乘法:這一類的最小二乘法不但使用均方誤差和最為目標函式,且在求最優解時使用的是對應推導出的矩陣運算解法。
本文中,指的是狹義上的最小二乘法。
最小二乘法具體怎麼求解呢?我們先以一元線性模型為例來說明。
假設有一組資料$x=\_},_}),\cdots ,(_},_})\}$,我們希望求出對應的一元線性模型來擬合這一組資料:
\[y=_}+_}x\]
既然要擬合,總要有乙個擬合程度高低的判斷標準,上文說到,最小二乘法中使用的就是誤差平方和方法,所以,這時候損失函式,或者說我們的目標函式就是:
\[j(\beta )=\sum\limits_^_}-_}_}-_})}^}}\]
有了這個目標函式,我們要做的就是求出$_}$和$_}$使得$j(\beta )$最小,在這裡就是極小值。
\[\frac_}}=\sum\limits_^_}-_}_}-_})(-_})}=2\sum\limits_^_}x_^-_}_}-_}_})}\]
\[\frac_}}=\sum\limits_^_}-_}_}-_})(-1)}=2\sum\limits_^_}_}+_}-_})(-1)}=2(m_}\frac^_}}}+m_}-m\frac^_}}})\]
因為$\bar=\frac^_}}}$,$\bar=\frac^_}}}$, 所以,上面第二個,也就是對$_}$的偏導可以轉化為:
\[\frac_}}=2(m_}\bar+m_}-m\bar)\]
我們知道,目標函式取得極值時,偏導一定是等於0的,所以,我們令$\frac_}}$等於0,於是有:
\[2(m_}\bar+m_}-m\bar)=0\]
\[_}=\bar-_}\bar\]
接著,我們繼續回到上面第乙個偏導,也就是對$_}$的偏導$\frac_}}$,令$\frac_}}=0$,並將$_}=\bar-_}\bar$代入,得:
\[2\sum\limits_^_}x_^-(\bar-_}\bar)_}-_}_})}=0\]
在這一等式中,只有$_}$是未知數,所以,我們可以很簡單得通過移項求解,最終可得:
\[_}=\frac^_}-\bar)(_}-\bar)}}^_}-\bar)}^}}}\]
這就是$_}$代入$_}=\bar-_}\bar$,就可以求得$_}$,這樣,$_}$和$_}$就都求出來了。
繼續,我們嘗試求解更一般化的多元線性情況。對於多元的情況,需要使用矩陣運算來求解,先用矩陣表示:
\[x\beta =y\]
其中,$x=\left[ \begin
1 & _} & \cdots & _} \\
1 & _} & \cdots & _} \\
\cdots & \cdots & \cdots & \cdots \\
1 & _} & \cdots & _} \\
\end \right],\beta =\left[ \begin
_} \\
_} \\
\cdots \\
_} \\
\end \right],y=\left[ \begin
_} \\
_} \\
\cdots \\
_} \\
\end \right]$
目標函式:
\[j(\beta )=^_}-\sum\limits_^_}_}} \right|}}^}=^} \right\|}^}\]
要求最佳擬合模型,也就是令上面目標函式最小,即為0:
\[y-x^}=0\]
移項得:
\[y=x^}\]
\[^}x)}^}^}y=^}x)}^}^}x^}\]
最終獲得解:
\[^}=^}x)}^}^}y\]
可以看出,對於一般的最小二乘法多元求解,使用矩陣運算即可,都不需要迭代 。
通過上面推導可知,最小二乘法可以矩陣運算求解,這種方法十分方便快捷,但這種方法不是萬能的,因為矩陣運算求解的條件時矩陣$x$可以,但在很多非線性模型中,就未必可逆了,這時候矩陣運算求解就行不通,這時候就可以通過梯度下降法求最優解。來具體說說這兩種方法的區別:
最小二乘法是機器學習中常用的優化演算法,解釋性強,求解方便快捷,但對雜訊資料過於敏感,且只適用於線性模型,對於非線性模型,可結合梯度下降法等方式使用。
參考:
機器學習回顧篇(2) 最小二乘法
在描述 模型準確程度有多種不同的方法 1 誤差和最小化。這種方法存在的問題是正負誤差會相互抵消,導致描述不準確。2 誤差絕對值最小化。這個方法在描述上面有問題,但是計算機上運算很複雜。3 誤差平方和最小化。這也是最小二乘法根本思想所在,不僅有效避免正負誤差抵消,而且運算上也簡單。在字面上,我們將 最...
機器學習(八)最小二乘法
文章將從線性代數和概率論統計兩個角度去分析和解釋最小二乘法 在定義了內積的n維向量空間rn 成為歐式空間或內積空間 中,定義兩個向量 和 的距離等於 的長度,記為d 而且這樣的距離滿足三條基本性質 d d d 0,當且僅當 時等號成立 d d d 設w是rn的乙個子空間,它是由 1,2,s生成的,設...
最小二乘法
include stdafx.h include include const int n 2 const int m 5 int sgn double x void lss double g n 1 int xm,int xn,double x m double p,double w m lss函式...