數值優化-最小二乘法(沒有比這更好的了)

最小二乘法

  引子:如何求解一個無解方程組 Ax=b 的解 (Ax=b 是方程組的矩陣表現形式,A爲矩陣,x爲未知數)

       (例:對於 方程組 而言,它的係數矩陣爲   ,未知數向量爲 ,右側則有向量 ,所以方程組用 矩陣表示爲

  這個問題聽起來很荒謬,實際上這種問題很常見而且必須要解決,所以當Ax=b 無解時如何去求解這個方程組,也就是當b不在A的列空間時如何去求解?當A是長方矩陣時,即方程式的數目m大於未知數的數目n。 舉個例子,你想要測量一顆衛星的位置,做了一千次測量也就是得到了一千個方程,但是用來確定衛星位置的參數並沒有一千個那麼多,也許只有六七個。另一個例子是當進行體檢時你要爲體檢者測量脈搏,體檢者的脈搏參數是一個未知數,爲了確定脈搏頻率你只需要測量一次就夠,但是爲了得到更準確地結果你需要多次測量,但其中可能存在一些誤差很大的壞數據。這就是一個很常見的實際問題,當方程式數目特別多的時候b中難免會混入一些壞數據,於是Ax=b就解不出來了,我們有時甚至不知道b中哪個數據有問題。但是b裏還包含了很多有效的好數據,所以在求解x時我們需要做的是把b中的壞數據篩選出來,這就用到了線性代數。

       那麼如何去求解,我們得到了一些方程如何求出他的最優解,第一種方法是不斷去掉一些方程直到剩下一個可逆的方陣然後求出他的解,但該方法的問題是對於所有的測量值我們無從判斷那些是有效的好數據那些是無效的壞數據。我們希望利用所有的測量值求出最優解從而得到最完整的信息,那麼我們該如何做?假設A是典型的長方形矩陣,我們可以通過消元法來判斷它什麼時候有解,如果消元法得到的結果是零等於非零,方程組無解。但問題是消元法可以告訴我們方程組是否有解,當我們碰到無解問題時我們該如何做,我們將引入一個非常重要的矩陣A^{T}A,假設A是一個m×n的長方矩陣,則A^{T}A爲一個n×n的方陣,且他是一個對稱矩陣\left(A^{\top} A\right)^{\top}=A^{\top}\left(A^{\top}\right)^{\top}=A^{\top} A,所以當等式Ax=b無解時,我們可以在等式兩邊乘上A^{T}, 將一個“壞”的等式轉變成一個“好”的等式A^{\top} A x=A^{\top} b ,這個方程是接下來內容的核心。


(一)正交向量(Orthogonal vector)與投影

   正交是垂直的另一種說法,若向量x與向量y正交(垂直),則 x^{T}y=0.

   投影,我們從將b投影到a說起, 爲了更好地從幾何上理解投影,我畫了一個二維的圖,首先在a這條線上找到距離b最近的點p,p即b在a上的投影,e爲b和p之間的誤差,且e垂直於a            

       從圖中可知投影p是a的倍數,p=ax (這是投影在一維內的情況,接下來我們會把它推廣到高維),且a垂直於e,即aT(b-xa)=0. 化簡得x=(aTb) ⁄ (aTa), 所以投影p=ax=a(aTb) ⁄ (aTa), 在這個式子中矩陣(aaT) ⁄ (aTa)幫助我們完成投影,我們將這個矩陣稱之爲投影矩陣P。換句話說投影就是由某個矩陣作用在b上使我們得到投影p ,即p = Pb,投影矩陣P=(aaT) ⁄ (aTa)有兩個非常重要的性質 (1)投影矩陣是對稱矩陣即PT=P (2)如果投影兩次,第二次的結果和第一次的結果是一樣的 即P2=P。接下來我們進入高維投影的情況

       在高維投影裏我們就不在討論一條線,而是討論一個平面甚至三維或n維的子空間,在討論高維投影之前我們先要明白我們爲什麼要做投影,這就涉及到我們在最開始提出的問題,等式Ax=b可能沒有解即b不在A的列空間裏(矩陣列空間的所有向量均爲該矩陣中列向量的某種線性組合),我可能有一堆等式,但等式的數量太多比未知數的數量還多造成無解,那麼我們該如何解決呢,我們只能求解最接近的那個可解問題。哪個纔是最接近的呢?首先Ax總是在A的列空間裏,而b卻不一定在A的列空間裏(即無解的情況),我們可以微調b將它變爲A的列空間中最接近初始b的那個向量,所以問題轉換成求解Ax=p,p是b在A列空間上的投影, 嚴格來說應該是, 因爲我們現在要求的未知數已經不再是原來的未知數了, 原來是無解的,現在我們求解的是最接近原來問題的可解問題,接下來我們就要在列空間內找到這樣一個合適的投影,然後我們就可以求解,這就是我們引入投影的原因。

      接下來我們考慮三維的情況,假設我們有一個平面,和一個不在平面上的b向量,我想要將b投影在平面上,這就是我要解決的問            

      p是b在平面上的投影,,誤差向量是e且e垂直於平面,ATe=AT(b-p)=, 這是方程的矩陣形式,我們發現平面上的投影方程和直線上的投影方程很相似,對於直線來說矩陣A只有一列,只要將方程裏的A換成a這個方程就和前面提到的直線投影的方程一模一樣, 本質上都是ATe=0,解得\hat{x}=\left(A^{\top} A\right)^{-1} A^{\top} b ,這就是方程的解,投影p=A \hat{x}{=A\left(A^{\top} A\right)^{-1} A^{\top} b},投影矩陣爲P=A\left(A^{\top} A\right)^{-1} A^{\top} ,投影矩陣可以將向量b投影到他距離A的列空間中的最近的那一點,且該投影矩陣仍然保有如下兩個特徵 (1)PT=P  (2)P2=P ,接下來我們考慮如何應用他們

(三)最小二乘

       當我們遇到一個方程組有太多的方程,現在我們需要求解他們的最優解,最常見的例子就是通過最小二乘法擬合一條直線,給定一系列數據點且這些數據點不共線      

        根據如上圖三點找到一條最合適的直線,這三個點分別是A(1,1), B(2,2),  C(3,2),顯然沒有直線能同時經過這三個點因此我們希望求出一條最優直線,這條直線要儘量接近這三個點使得總誤差最小,圖中這三個點到這條線的誤差分別是g,h,i,將這些誤差的平方相加 g2+h2+i2,找出最小平方和的解(即最小二乘)也就求出了最優直線。擬合一條直線是統計科學中非常重要的一部分,準確說法應該叫回歸,我現在做的就是線性迴歸分析,我用誤差的平方和做爲測量總誤差的標準,但是最小二乘法有一個問題,如果我再添加一個點,這個點距離其他三個點很遠很遠,那麼在這種情況下原來求得的最優解就不是最優解,因爲這條線有一個非常大的誤差,第四個點距離我原來求得的最優直線太遠了,在統計學中這樣的點稱之爲離羣值,我們在處理問題是並不希望看見這樣的點,如果有離羣值我們希望找到它因爲它很可能是個錯誤數據,所以最小二乘法很容易受到離羣值影響 。

        假設沒有離羣值,只有上圖中的三個點,爲了求解這條直線首先我們需要構建一個矩陣A,只要找到了矩陣A我們就可以應用我們得到的公式,設這條最優的直線是b=C+Dt,我們需要確定C,D的值。根據這三個點我們可以得到一個方程組 C+D=1, C+2D=2, C+3D=2,注意這個方程組是無解的,如果有解的話表示這三點共線。我們用矩陣方程Ax=b來表示這個方程組, 

,這個方程是無解的,但是我們可以求出“最優解”,所謂“最優解”並非原方程Ax=b的解,而是另一個方程的解,(也就是我們前邊提到過的)這是最小二乘法的核心方程,雖然Ax=b無解,但當兩邊都乘以AT就得到了一個有解的方程,這就可以求出最優解,也就是最理想的投影以及投影矩陣,根據,得到   即,用消元法解得, 所以最優直線爲y=x/2 + 2/3。這就是最小二乘法,最典型的應用就是擬合一條直線

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