機器學習數學:最小二乘法

最小二乘法是一種數學優化技術,它通過最小化誤差的平方和尋找數據的最佳函數匹配,最小二乘法可用於曲線擬合。

超定方程組

超定方程組是指方程個數大於未知量個數的方程組,一般是不存在解的矛盾方程組,例如: egin{equation} left{ egin{aligned} overset{.}w_1x_{11}+w_2x_{12}+...+w_dx_{1d}+b_1=y_1 \ w_1x_{21}+w_2x_{22}+...+w_dx_{2d}+b_2=y_2 \ w_1x_{31}+w_2x_{32}+...+w_dx_{3d}+b_3=y_3 \ ....\ ....\ w_1x_{n1}+w_2x_{n2}+...+w_dx_{nd}+b_n=y_n \ end{aligned} 
ight. end{equation}\ (ngg d)

我們把 b_n=w_{no}x_{no}(w_{n0}=b,x_{n0}=1) 代入,上述方程組可以表示為: Xvec w=vec y,其中: X=egin{bmatrix} x_1^T \x_2^T \x_3^T \...\x_n^T \ end{bmatrix}n*(d+1)矩陣\ vec w=egin{pmatrix} w_0\w_1\w_2\...\w_d\ end{pmatrix}quad d+1個分量\ vec y=egin{pmatrix} y_1\y_2\...\y_n\ end{pmatrix}quad quad n個分量

損失函數

由於上面方程一般沒有解,所以要選擇合適的w讓所有方程組「盡量成立」,即求解的w作為方程組係數,再代入已有的 x_i 後計算得到的值 approx y_i 。而最好的w就是讓 「approx" 左右兩邊的值盡量接近,於是我們構造一個表達式,稱為損失函數: L(vec w)=sum_{i=1}^{n}{(vec w^Tx_i-y_i)^2}

最好的w就是要滿足損失函數的值最小,即:

hat{vec w}=argmin(L(vec w))

求解最小值(矩陣法)

損失函數是平方+連加:L(vec w)=(vec w^Tx_1-y_1)^2+(vec w^Tx_2-y_2)^2+...+(vec w^Tx_n-y_n)^2 ,即為向量 egin{pmatrix} vec wx_1-y_1\vec wx_2-y_2\...\vec wx_n-y_n\ end{pmatrix} 的L2範數的平方,我們有以下轉換: L(vec w) = sum_{n=1}^N(vec w_n^Tvec x_n-y_n)^2\ = sum_{n=1}^N(vec x_n^Tvec w_n-y_n)^2\ (向量內積符合交換律)\ =egin{Vmatrix} vec x_1^Tvec w -y_1 \ vec x_2^Tvec w -y_2 \ vec x_n^Tvec w -y_n \ end{Vmatrix}^2\ (平方連加當成向量求模再平方)\ =left| egin{bmatrix} x_{1}^T \x_{2}^T \vdots \x_{n}^Tend{bmatrix}overrightarrow {w}-egin{bmatrix} y_{1} \ y_{2} \ vdots \ y_{n} end{bmatrix}
ight| ^{2}quad (令X = egin{bmatrix} x_{1}^T \x_{2}^T \vdots\x_{n}^Tend{bmatrix}quad vec y=egin{bmatrix} y_{1} \y_{2} \vdots \y_{n}end{bmatrix})\=left| Xoverrightarrow {w}-overrightarrow {y}
ight| ^2 quad (X:N*(d+1) quad w:(d+1)*Nquad y:N*1)\ =left( left( Xw
ight) left( Xw
ight) -2left( Xw
ight) y+yy
ight) \ =left( left( Xw
ight) ^{T}left( Xw
ight) -2left( Xw
ight) ^{T}y+y^{T}y
ight) \ =left( w^{T}X^{T}Xw-2w^{T}X^{T}y+y^{T}y
ight) \ =left( w^{T}Aw-2w^{T}b+c
ight)

最終我們有:

L(vec w)= w^{T}Aw-2w^{T}b+c

而方程的最小值點在導數=0的地方取得:


abla_w Lleft( w
ight) =2 X^{T}Xw-2X^{T}y=0

求解此方程:

2X^{T}Xw-2X^{T}y =0.\ Rightarrow X^{T}Xw=X^{T}y\ Rightarrowleft( X^{T}X
ight) ^{-1}left( X^{T}X
ight) omega=left( X^{T}X
ight) ^{-1}X^{T}y\ Rightarrow w =left( X^{T}X
ight)^{-1} X^{T}y

注1:上式中 left(X^{T}X
ight)^{-1} X^{T} 叫做矩陣X的偽逆(pseudo-inverse) X^? ,此處輸入矩陣X在很少的情況下才是方陣(N=d+1時)。而這種偽逆矩陣的形式和方陣中的逆矩陣具有很多相似的性質,因此才有此名稱。 X^TX 在大部分的情況下是可逆的,原因是在進行機器學習時,通常滿足 Ngg d+1,即樣本數量N遠遠大於樣本的維度d加1。

注2:上述求解運用到了對向量求導,其實就是對分量求導再集合的寫法

注3:如果訓練樣本集過大,會導致求解偽逆很複雜。(此時梯度下降法便閃亮登場了!)

求解最小值(代數法)

代數解法這裡就不論述了,因為寶寶目前實在沒那麼多精力去搞懂。有需求的可以自行百度。

後話

  • 其實最小二乘法不能說是某個特定解法,把它說成是一種整體思路應該更為貼切。(之前我就陷入了解法之中而困惑不已)
  • 最小二乘法到這裡還是遠遠不夠的,我們只是在表現層論述一番,而想透過現象看本質還得深入的研究,比如:

「最小二乘法的本質是最小化係數矩陣所張成的向量空間到觀測向量的歐式誤差距離」

「最小二乘法的一種常見的描述是殘差滿足正態分布的最大似然估計」

  • 等將來時間空閑下來,還要好好深入研究一下。
  • 我有個裝逼朋友非要問我為啥不用最小三乘四乘,有知道的可以告訴我嗎?

既然都看到這兒了,少年點個贊可好?感謝!

Done 2017年11月17日17:56:57


推薦閱讀:

矩陣轉換最優化怎麼求?
線性回歸之――最小二乘法
梯度下降法
普通最小二乘法的兩種推導方法
BAT機器學習面試1000題系列(66-70題)

TAG:機器學習 | 最小二乘法 |