要解決的問題
在工程應用中,我們經常會用一組觀測數據去估計模型的參數,模型是我們根據先驗知識定下的。比如我們有一組觀測數據(xi,yi)(一維),通過一些數據分析我們猜測y和x之間存在線性關係,那麼我們的模型就可以定爲:f(x)=kx+b
這個模型只有兩個參數,所以理論上,我們只需要觀測兩組數據建立兩個方程,即可解出兩個未知數。類似的,假如模型有n個參數,我們只需要觀測n組數據就可求出參數,換句話說,在這種情況下,模型的參數是唯一確定解。
但是在實際應用中,由於我們的觀測會存在誤差(偶然誤差、系統誤差等),所以我們總會做多餘觀測。比如在上述例子中,儘管只有兩個參數,但是我們可能會觀測n組數據(x1,y1)..,(xn,yn),這會導致我們無法找到一條直線經過所有的點,也就是說,方程無確定解。
於是這就是我們要解決的問題:雖然沒有確定解,但是我們能不能求出近似解,使得模型能在各個觀測點上達到“最佳“擬合。那麼“最佳”的準則是什麼?可以是所有觀測點到直線的距離和最小,也可以是所有觀測點到直線的誤差(真實值-理論值)絕對值和最小,也可以是其它,如果是你面臨這個問題你會怎麼做?
早在19世紀,勒讓德就認爲讓“誤差的平方和最小”估計出來的模型是最接近真實情形的。
爲什麼就是誤差平方而不是其它的,這個問題連歐拉、拉普拉斯都未能成功回答,後來是高斯建立了一套誤差分析理論,從而證明了確實是使誤差平方和最小的情況下系統是最優的。理論的證明也並不難,如果你瞭解了會有更深刻的認識,限於篇幅我會寫在另外一篇博客。
按照勒讓德的最佳原則,於是就是求:
L=1∑n(yi−f(x))2
這個目標函數取得最小值時的函數參數,這就是最小二乘法的思想,所謂“二乘”就是平方的意思。從這裏我們可以看到,最小二乘法其實就是用來做函數擬合的一種思想。
至於怎麼求出具體的參數那就是另外一個問題了,理論上可以用導數法、幾何法,工程上可以用梯度下降法。下面以最常用的線性迴歸爲例進行推導和理解。
線性迴歸
線性迴歸因爲比較簡單,可以直接推導出解析解,而且許多非線性的問題也可以轉化爲線性問題來解決,所以得到了廣泛的應用。甚至許多人認爲最小二乘法指的就是線性迴歸,其實並不是,最小二乘法就是一種思想,它可以擬合任意函數,線性迴歸只是其中一個比較簡單而且也很常用的函數,所以講最小二乘法基本都會以它爲例。
下面我會先用矩陣法進行推導,然後再用幾何法來幫助你理解最小二乘法的幾何意義。
矩陣解法
線性迴歸定義爲:hθ(x1,x2,…xn−1)=θ0+θ1x1+…+θnxn−1(θ爲參數)假設現在有m個樣本,每個樣本有n−1維特徵,將所有樣本點代入模型中得:
h1=θ0+θ1x1,1+θ2x1,2+…+θn−1x1,n−1h2=θ0+θ1x2,1+θ2x2,2+…+θn−1x2,n−1⋮hm=θ0+θ1xm,1+θ2xm,2+…+θn−1xm,n−1爲方便用矩陣表示,我們令x0=1,於是上述方程可以用矩陣表示爲:
h=Xθ其中,h爲mx1的向量, 代表模型的理論值,θ 爲nx1的向量,X爲mxn維的矩陣,m代表樣本的個數,n代表樣本的特徵數,於是目標損失函數用矩陣表示爲:
J(θ)=∥h−Y∥2=∥Xθ−Y∥2=(Xθ−Y)T(Xθ−Y)其中Y是樣本的輸出向量, 維度爲mx1。
根據高數知識我們知道函數取得極值就是導數爲0的地方,所以我們只需要對損失函數求導令其等於0就可以解出θ。矩陣求導屬於矩陣微積分的內容,我也是現學的(…,這裏先介紹兩個用到的公式:
∂x∂xTa=∂x∂aTx=a∂x∂xTAx=Ax+ATx如果矩陣A是對稱的:Ax+ATx=2Ax對目標函數化簡:
J(θ)=θTXTXθ−θTXTY−YTXθ+YTY求導令其等於0:∂θ∂J(θ)=2XTXθ−2XTY=0解得 θ=(XTX)−1XTY,經過推導我們得到了θ的解析解,現在只要給了數據,我們就可以帶入解析解中直接算出θ。
幾何意義
幾何意義會直觀的幫助你理解最小二乘法究竟在幹什麼。首先先來解釋一下矩陣乘法的幾何意義,對於一個方程組Ax,我們可以看做是x對矩陣A的列向量的線性組合,比如:
{1×x1+x2=3−1×x1+x2=1⇔[1−111][x1x2]=[31]⇔A×x=b
可以看作:
[1−1]×x1+[11]×x2=[31]⇔a1×x1+a2×x2=b
畫在座標軸上可以看到,向量b其實就是向量a1與a2的線性組合,因爲他們都是在一個平面上,顯然是有解的。
但是如文章開頭所說,由於存在觀測誤差,我們往往會做多餘觀測,比如要擬合一次方程 y=kx+b,我們可能觀測了三個點(0,2),(1,2),(2,3),寫成矩陣形式如下(爲表述方便,用x1代替k,x2代替b ):
⎩⎨⎧1×x1+x2=20×x1+x2=22×x1+x2=3⇔⎣⎡102111⎦⎤[x1x2]=⎣⎡223⎦⎤⇔A×x=b
表示成線性組合的方式:
⎣⎡102⎦⎤×x1+⎣⎡111⎦⎤×x2=⎣⎡223⎦⎤⇔a1×x1+a2×x2=b
畫在圖中如下:
從圖中我們可以看到,無論 a1 和 a2 怎麼線性組合都不可能得到 b,因爲 a1 和 a2 的線性組合成的向量只能落在它們組成的子空間 S 中。
退而求其次,雖然我們不可能得到 b,但在S上找一個和b最接近的總可以吧。那麼將b投影 在平面S上得到的向量p就是和b最接近的向量(把向量看作點,最接近的意思就是點到平面某點取得距離最短,自然就是投影所成的交點)。
換句話說,方程組Ax=b雖然無解,也就是b不在A的列空間中,但是我們可以在A的列空間中找到一個和b最接近的向量p,p就是b在A的列空間中的投影,通過求Ax=p的解,就是原方程的最小二乘解。
由幾何意義可知垂線e=b−p=b−Ax正交於平面 S,也就是a1Te=0,a2Te=0,寫成矩陣形式:
ATe=AT(b−Ax)=ATb−ATAx=0解得 x=(ATA)−1ATb,可以看到推導結果和矩陣法一樣。從上面可以看到,最小二乘法的幾何意義就是求解 b 在A的列向量空間中的投影。
到這裏最小二乘法的推導已經完成了,但是我們忽略了一個問題,就是假如ATA不可逆怎麼辦?這個問題我會另寫一篇博客進行介紹。
以上就是全部內容。
Reference
https://www.cnblogs.com/pinard/p/5976811.html
https://zhuanlan.zhihu.com/p/38128785
https://www.zhihu.com/question/304164814/answer/549972357
如果對你有幫助,請點個贊讓我知道:-D