1 引言
在機器學習常用的優化演算法中,梯度下降法和最小二乘法佔盡了風騷。梯度下降法上一篇中已經詳細介紹過了,那麼這一篇,我們繼續說一說最小二乘法。
2 什麼是最小二乘法
描述預測模型準確程度有多重不同的方法:
(1)誤差和最小化。這種方法存在的問題是正負誤差會相互抵消,導致描述不準確。
(2)誤差絕對值最小化。這個方法在描述上面有問題,但是計算機上運算很複雜。
(3)誤差平方和最小化。這也是最小二乘法根本思想所在,不僅有效避免正負誤差抵消,而且運算上也簡單。
在字面上,我們將“最小二乘”拆分成兩個詞語,就是“最小”和“二乘”。其中,“二乘”指的就是以平方的方式來衡量預測值與實際值之間的差異,也就是誤差平方。“最小”就好理解了,就是說預測模型中各引數要使得預測值與實際值之間的誤差平方和最小。
要說最小二乘法的定義,總結多方面資料,我認為分為兩派:
一類是廣義上的最小二乘法。這一類的最小二乘法泛指所有使用均方誤差和方法來衡量差異程度進而求最優值得方法,這一類方法並不關注如何求最優解,只要使用了均方誤差和作為目標函式,就演算法最小二乘法,從這種角度來說,最小二乘法是一種優化思想,而梯度下降法只是最小二乘法的一個分支,一種具體實現。
另一派是狹義上的最小二乘法:這一類的最小二乘法不但使用均方誤差和最為目標函式,且在求最優解時使用的是對應推匯出的矩陣運算解法。
本文中,指的是狹義上的最小二乘法。
3 求解過程
最小二乘法具體怎麼求解呢?我們先以一元線性模型為例來說明。
假設有一組資料$X=\{({{x}_{1}},{{y}_{1}},\cdots ,({{x}_{m}},{{y}_{m}})\}$,我們希望求出對應的一元線性模型來擬合這一組資料:
\[y={{\beta }_{0}}+{{\beta }_{1}}x\]
既然要擬合,總要有一個擬合程度高低的判斷標準,上文說到,最小二乘法中使用的就是誤差平方和方法,所以,這時候損失函式,或者說我們的目標函式就是:
\[J(\beta )=\sum\limits_{i=0}^{m}{{{({{y}_{i}}-{{\beta }_{1}}{{x}_{i}}-{{\beta }_{0}})}^{2}}}=\sum\limits_{i=0}^{m}{{{(f({{x}_{i}})-{{\beta }_{1}}{{x}_{i}}-{{\beta }_{0}})}^{2}}}\]
有了這個目標函式,我們要做的就是求出${{\beta }_{0}}$和${{\beta }_{1}}$使得$J(\beta )$最小,在這裡就是極小值。
上一篇中我們說到,求極值的一個很好的方法就是求導,在這裡因為有多個引數,所以,我們要分別對${{\beta }_{0}}$和${{\beta }_{1}}$求偏導:
\[\frac{\partial J(\beta )}{\partial {{\beta }_{1}}}=\sum\limits_{i=0}^{m}{2({{y}_{i}}-{{\beta }_{1}}{{x}_{i}}-{{\beta }_{0}})(-{{x}_{i}})}=2\sum\limits_{i=0}^{m}{({{\beta }_{1}}x_{i}^{2}-{{\beta }_{0}}{{x}_{i}}-{{x}_{i}}{{y}_{i}})}\]
\[\frac{\partial J(\beta )}{\partial {{\beta }_{0}}}=\sum\limits_{i=0}^{m}{2({{y}_{i}}-{{\beta }_{1}}{{x}_{i}}-{{\beta }_{0}})(-1)}=2\sum\limits_{i=0}^{m}{({{\beta }_{1}}{{x}_{i}}+{{\beta }_{0}}-{{y}_{i}})(-1)}=2(m{{\beta }_{1}}\frac{\sum\limits_{1}^{m}{{{x}_{i}}}}{m}+m{{\beta }_{0}}-m\frac{\sum\limits_{1}^{m}{{{y}_{i}}}}{m})\]
因為$\bar{x}=\frac{\sum\limits_{1}^{m}{{{x}_{i}}}}{m}$,$\bar{y}=\frac{\sum\limits_{1}^{m}{{{y}_{i}}}}{m}$, 所以,上面第二個,也就是對${{\beta }_{0}}$的偏導可以轉化為:
\[\frac{\partial J(\beta )}{\partial {{\beta }_{0}}}=2(m{{\beta }_{1}}\bar{x}+m{{\beta }_{0}}-m\bar{y})\]
我們知道,目標函式取得極值時,偏導一定是等於0的,所以,我們令$\frac{\partial J(\beta )}{\partial {{\beta }_{0}}}$等於0,於是有:
\[2(m{{\beta }_{1}}\bar{x}+m{{\beta }_{0}}-m\bar{y})=0\]
\[{{\beta }_{0}}=\bar{y}-{{\beta }_{1}}\bar{x}\]
接著,我們繼續回到上面第一個偏導,也就是對${{\beta }_{1}}$的偏導$\frac{\partial J(\beta )}{\partial {{\beta }_{1}}}$,令$\frac{\partial J(\beta )}{\partial {{\beta }_{1}}}=0$,並將${{\beta }_{0}}=\bar{y}-{{\beta }_{1}}\bar{x}$代入,得:
\[2\sum\limits_{i=0}^{m}{({{\beta }_{1}}x_{i}^{2}-(\bar{y}-{{\beta }_{1}}\bar{x}){{x}_{i}}-{{x}_{i}}{{y}_{i}})}=0\]
在這一等式中,只有${{\beta }_{1}}$是位置數,所以,我們可以很簡單得通過移項求解,最終可得:
\[{{\beta }_{1}}=\frac{\sum\limits_{1}^{m}{({{x}_{i}}-\bar{x})({{y}_{i}}-\bar{y})}}{\sum\limits_{1}^{m}{{{({{x}_{i}}-\bar{x})}^{2}}}}\]
這就是${{\beta }_{1}}$代入${{\beta }_{0}}=\bar{y}-{{\beta }_{1}}\bar{x}$,就可以求得${{\beta }_{0}}$,這樣,${{\beta }_{0}}$和${{\beta }_{1}}$就都求出來了。
繼續,我們嘗試求解更一般化的多元線性情況。對於多元的情況,需要使用矩陣運算來求解,先用矩陣表示:
\[X\beta =y\]
其中,$X=\left[ \begin{matrix}
1 & {{x}_{12}} & \cdots & {{x}_{1m}} \\
1 & {{x}_{22}} & \cdots & {{x}_{2m}} \\
\cdots & \cdots & \cdots & \cdots \\
1 & {{x}_{n2}} & \cdots & {{x}_{nm}} \\
\end{matrix} \right],\beta =\left[ \begin{matrix}
{{\beta }_{0}} \\
{{\beta }_{1}} \\
\cdots \\
{{\beta }_{m}} \\
\end{matrix} \right],y=\left[ \begin{matrix}
{{y}_{0}} \\
{{y}_{1}} \\
\cdots \\
{{y}_{n}} \\
\end{matrix} \right]$
目標函式:
\[J(\beta )={{\sum\limits_{i=1}^{m}{\left| {{y}_{i}}-\sum\limits_{j=1}^{n}{{{x}_{ij}}{{\beta }_{j}}} \right|}}^{2}}={{\left\| y-X{{\beta }^{T}} \right\|}^{2}}\]
要求最佳擬合模型,也就是令上面目標函式最小,即為0:
\[y-X{{\beta }^{T}}=0\]
移項得:
\[y=X{{\beta }^{T}}\]
\[{{({{X}^{T}}X)}^{-1}}{{X}^{T}}y={{({{X}^{T}}X)}^{-1}}{{X}^{T}}X{{\beta }^{T}}\]
最終獲得解:
\[{{\beta }^{T}}={{({{X}^{T}}X)}^{-1}}{{X}^{T}}y\]
可以看出,對於一般的最小二乘法多元求解,使用矩陣運算即可,都不需要迭代 。
4 最小二乘法與梯度下降法
通過上面推導可知,最小二乘法可以矩陣運算求解,這種方法十分方便快捷,但這種方法不是萬能的,因為矩陣運算求解的條件時矩陣$X$可以,但在很多非線性模型中,就未必可逆了,這時候矩陣運算求解就行不通,這時候就可以通過梯度下降法求最優解。來具體說說這兩種方法的區別:
5 總結
最小二乘法是機器學習中常用的優化演算法,解釋性強,求解方便快捷,但對噪聲資料過於敏感,且只適用於線性模型,對於非線性模型,可結合梯度下降法等方式使用。
參考:
https://www.datalearner.com/blog/1051539312290417
https://www.cnblogs.com/wangkundentisy/p/7505487.html