一文讓你徹底搞懂最小二乘法(超詳細推導)

要解決的問題

在工程應用中,我們經常會用一組觀測數據去估計模型的參數,模型是我們根據先驗知識定下的。比如我們有一組觀測數據(xi,yi)(x_i,y_i)(一維),通過一些數據分析我們猜測yyxx之間存在線性關係,那麼我們的模型就可以定爲:f(x)=kx+bf(x)=kx+b

這個模型只有兩個參數,所以理論上,我們只需要觀測兩組數據建立兩個方程,即可解出兩個未知數。類似的,假如模型有nn個參數,我們只需要觀測nn組數據就可求出參數,換句話說,在這種情況下,模型的參數是唯一確定解。

但是在實際應用中,由於我們的觀測會存在誤差(偶然誤差、系統誤差等),所以我們總會做多餘觀測。比如在上述例子中,儘管只有兩個參數,但是我們可能會觀測nn組數據(x1,y1)..,(xn,yn)(x_1, y_1)..,(x_n, y_n),這會導致我們無法找到一條直線經過所有的點,也就是說,方程無確定解。
在這裏插入圖片描述

於是這就是我們要解決的問題:雖然沒有確定解,但是我們能不能求出近似解,使得模型能在各個觀測點上達到“最佳“擬合。那麼“最佳”的準則是什麼?可以是所有觀測點到直線的距離和最小,也可以是所有觀測點到直線的誤差(真實值-理論值)絕對值和最小,也可以是其它,如果是你面臨這個問題你會怎麼做?

早在19世紀,勒讓德就認爲讓“誤差的平方和最小”估計出來的模型是最接近真實情形的。

爲什麼就是誤差平方而不是其它的,這個問題連歐拉、拉普拉斯都未能成功回答,後來是高斯建立了一套誤差分析理論,從而證明了確實是使誤差平方和最小的情況下系統是最優的。理論的證明也並不難,如果你瞭解了會有更深刻的認識,限於篇幅我會寫在另外一篇博客。

按照勒讓德的最佳原則,於是就是求:
L=1n(yif(x))2L=\sum_{1}^{n}\left(y_i-f(x)\right)^{2}
這個目標函數取得最小值時的函數參數,這就是最小二乘法的思想,所謂“二乘”就是平方的意思。從這裏我們可以看到,最小二乘法其實就是用來做函數擬合的一種思想

至於怎麼求出具體的參數那就是另外一個問題了,理論上可以用導數法、幾何法,工程上可以用梯度下降法。下面以最常用的線性迴歸爲例進行推導和理解。

線性迴歸

線性迴歸因爲比較簡單,可以直接推導出解析解,而且許多非線性的問題也可以轉化爲線性問題來解決,所以得到了廣泛的應用。甚至許多人認爲最小二乘法指的就是線性迴歸,其實並不是,最小二乘法就是一種思想,它可以擬合任意函數,線性迴歸只是其中一個比較簡單而且也很常用的函數,所以講最小二乘法基本都會以它爲例。

下面我會先用矩陣法進行推導,然後再用幾何法來幫助你理解最小二乘法的幾何意義。

矩陣解法

線性迴歸定義爲:hθ(x1,x2,xn1)=θ0+θ1x1++θnxn1h_{\theta}\left(x_{1}, x_{2}, \ldots x_{n-1}\right)=\theta_{0}+\theta_{1} x_{1}+\ldots+\theta_{n} x_{n-1}θ\theta爲參數)假設現在有mm個樣本,每個樣本有n1n-1維特徵,將所有樣本點代入模型中得:
h1=θ0+θ1x1,1+θ2x1,2++θn1x1,n1h2=θ0+θ1x2,1+θ2x2,2++θn1x2,n1hm=θ0+θ1xm,1+θ2xm,2++θn1xm,n1\begin{array}{l} h_{1}=\theta_{0}+\theta_{1} x_{1,1}+\theta_{2} x_{1,2}+\ldots+\theta_{n-1} x_{1,n-1} \\ h_{2}=\theta_{0}+\theta_{1} x_{2,1}+\theta_{2} x_{2,2}+\ldots+\theta_{n-1} x_{2,n-1}\\ \vdots \\ h_{m}=\theta_{0}+\theta_{1} x_{m, 1}+\theta_{2} x_{m, 2}+\ldots+\theta_{n-1} x_{m, n-1} \end{array}爲方便用矩陣表示,我們令x0=1x_0=1,於是上述方程可以用矩陣表示爲:
h=Xθ\mathbf{h}=\mathbf{X} \theta其中,h\mathbf{h}爲mx1的向量, 代表模型的理論值,θ\theta 爲nx1的向量,XX爲mxn維的矩陣,mm代表樣本的個數,nn代表樣本的特徵數,於是目標損失函數用矩陣表示爲:
J(θ)=hY2=XθY2=(XθY)T(XθY) J(\theta)=\|\mathbf{h}-\mathbf{Y}\|^2 =\|\mathbf{X}\theta-\mathbf{Y}\|^2= (\mathbf{X} \theta-\mathbf{Y})^{T}(\mathbf{X} \theta-\mathbf{Y}) 其中Y\mathbf{Y}是樣本的輸出向量, 維度爲mx1。

根據高數知識我們知道函數取得極值就是導數爲0的地方,所以我們只需要對損失函數求導令其等於0就可以解出θ\theta。矩陣求導屬於矩陣微積分的內容,我也是現學的(…,這裏先介紹兩個用到的公式:
xTax=aTxx=a\frac{\partial x^{T} a}{\partial x}=\frac{\partial a^{T} x}{\partial x}=axTAxx=Ax+ATx\frac{\partial x^{T} A x}{\partial x}=A x+A^{T} x如果矩陣A是對稱的:Ax+ATx=2AxA x+A^{T} x=2 A x對目標函數化簡:
J(θ)=θTXTXθθTXTYYTXθ+YTYJ(\theta)=\theta^{T} X^{T} X \theta-\theta^{T} X^{T}Y-Y^{T} X\theta+Y^{T} Y 求導令其等於0:θJ(θ)=2XTXθ2XTY=0\frac{\partial}{\partial \theta} J(\theta)=2X^{T} X \theta-2X^TY=0解得 θ=(XTX)1XTY\theta=\left(X^{T}X\right)^{-1} X^{T}Y,經過推導我們得到了θ\theta的解析解,現在只要給了數據,我們就可以帶入解析解中直接算出θ\theta

幾何意義

幾何意義會直觀的幫助你理解最小二乘法究竟在幹什麼。首先先來解釋一下矩陣乘法的幾何意義,對於一個方程組AxAx,我們可以看做是xx對矩陣AA的列向量的線性組合,比如:

{1×x1+x2=31×x1+x2=1[1111][x1x2]=[31]A×x=b\left\{\begin{array}{l} 1 \times x_{1}+x_{2}=3 \\ -1 \times x_{1}+x_{2}=1 \end{array} \Leftrightarrow\left[\begin{array}{ll} 1 & 1 \\ -1 & 1 \end{array}\right]\left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right]=\left[\begin{array}{l} 3 \\ 1 \end{array}\right] \Leftrightarrow A \times x=b\right.
可以看作:
[11]×x1+[11]×x2=[31]a1×x1+a2×x2=b\left[\begin{array}{c} 1 \\ -1 \end{array}\right] \times x_{1}+\left[\begin{array}{c} 1 \\ 1 \end{array}\right] \times x_{2}=\left[\begin{array}{l} 3 \\ 1 \end{array}\right] \Leftrightarrow a_{1} \times x_{1}+a_{2} \times x_{2}=b
畫在座標軸上可以看到,向量b\mathbf{b}其實就是向量a1\mathbf{a_1}a2\mathbf{a_2}的線性組合,因爲他們都是在一個平面上,顯然是有解的。
在這裏插入圖片描述
但是如文章開頭所說,由於存在觀測誤差,我們往往會做多餘觀測,比如要擬合一次方程 y=kx+by=k x+b,我們可能觀測了三個點(0,2),(1,2),(2,3),寫成矩陣形式如下(爲表述方便,用x1代替k,x2代替b ):
{1×x1+x2=20×x1+x2=22×x1+x2=3[110121][x1x2]=[223]A×x=b\left\{\begin{array}{l} 1 \times x_{1}+x_{2}=2 \\ 0 \times x_{1}+x_{2}=2 \\ 2 \times x_{1}+x_{2}=3 \end{array} \Leftrightarrow\left[\begin{array}{ll} 1 & 1 \\ 0 & 1 \\ 2 & 1 \end{array}\right]\left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right]=\left[\begin{array}{l} 2 \\ 2 \\ 3 \end{array}\right] \Leftrightarrow A \times x=b\right.
表示成線性組合的方式:
[102]×x1+[111]×x2=[223]a1×x1+a2×x2=b\left[\begin{array}{l} 1 \\ 0 \\ 2 \end{array}\right] \times x_{1}+\left[\begin{array}{l} 1 \\ 1 \\ 1 \end{array}\right] \times x_{2}=\left[\begin{array}{l} 2 \\ 2 \\ 3 \end{array}\right] \Leftrightarrow a_{1} \times x_{1}+a_{2} \times x_{2}=b

畫在圖中如下:
在這裏插入圖片描述
從圖中我們可以看到,無論 a1\mathbf{a_1}a2\mathbf{a_2} 怎麼線性組合都不可能得到 b\mathbf{b},因爲 a1\mathbf{a_1}a2\mathbf{a_2} 的線性組合成的向量只能落在它們組成的子空間 S\mathbf{S} 中。

退而求其次,雖然我們不可能得到 b\mathbf{b},但在S\mathbf{S}上找一個和b\mathbf{b}最接近的總可以吧。那麼將b\mathbf{b}投影 在平面S\mathbf{S}上得到的向量p\mathbf{p}就是和b\mathbf{b}最接近的向量(把向量看作點,最接近的意思就是點到平面某點取得距離最短,自然就是投影所成的交點)。
在這裏插入圖片描述

換句話說,方程組Ax=bAx=b雖然無解,也就是b不在A的列空間中,但是我們可以在AA的列空間中找到一個和bb最接近的向量pppp就是bbAA的列空間中的投影,通過求Ax=pAx=p的解,就是原方程的最小二乘解。

由幾何意義可知垂線e=bp=bAxe=b-p=b-Ax正交於平面 S\mathbf{S},也就是a1Te=0,a2Te=0a_{1}^{T} e=0, a_{2}^{T} e=0,寫成矩陣形式:
ATe=AT(bAx)=ATbATAx=0\begin{array}{c} A^{T} e=A^{T}(b-Ax)=A^{T} b-A^{T} Ax=0 \end{array}解得 x=(ATA)1ATbx=\left(A^{T} A\right)^{-1} A^{T} b,可以看到推導結果和矩陣法一樣。從上面可以看到,最小二乘法的幾何意義就是求解 bbAA的列向量空間中的投影

到這裏最小二乘法的推導已經完成了,但是我們忽略了一個問題,就是假如ATAA^TA不可逆怎麼辦?這個問題我會另寫一篇博客進行介紹。

以上就是全部內容。

Reference
https://www.cnblogs.com/pinard/p/5976811.html
https://zhuanlan.zhihu.com/p/38128785
https://www.zhihu.com/question/304164814/answer/549972357

如果對你有幫助,請點個贊讓我知道:-D

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章