最小二乘法(least square method)的直觀認識
背景
關於最小二乘法(LSM,least square method)網上有很多講解,但是看起來難免有些晦澀,很多也說不清楚看得莫名其妙,最近機器學習programming作業需要實現5種不同的迴歸的方法,其中最基礎的就是LSM,所以不如趁這個機會討論下如何直觀的認識它的本質。本文主要關注點是最小二乘法的矩陣形式推導和幾何的直觀理解(可能會有很多不太嚴謹的地方,歡迎斧正)。
正文
在Ax=b中,A是一個向量組,假設其中有列向量(a1,a2...an);
x是一個"係數向量",假設是有(x1,x2...xn)轉置;
b是最終向量,顯然也有(b1,b2...bn)轉置。
那其實這個公式展開後就會有這樣的關係, a1x1+a2x2+...+anX
接下來思考一下,如果不存在一個係數向量x讓A向量組可以線性表示b的情況,那什麼樣的x係數能做到讓A向量組線性組合後最接近b呢?
這裡先引入一個概念:張成(span)。直觀解釋是,向量v1,v2,.,vn的所有線性組合構成的集合,稱為v1,v2,...,vn的張成(span).或者叫生成子空間。在這個問題中,b向量無法在A的生成子空間中被表示,那麼想象一下,假設A是一個所有向量通過各種向量組合形成的“平面”,b因為無法被A表示所以像一根木棍插在這個水面上。現在我的要求是在水面上找一個和b最“像”(方向一致)的向量,顯然b在水面的上的影子(垂直投影)是在A空間上能被表示出來並且離b最近的一個向量。如果對這個結論難以理解,那麼再想象如果是水面上別的向量只會和b的夾角越來越大。
ok,問題到這裡,發現其實我們要找得是Ax=b投影 (1)
而根據向量的加減法運算:b投影=b-b垂直 (2)
然後把(2)式代入(1): Ax = b-b垂直 (3)
這裡用到一個trick,b垂直 垂直於A平面,那麼A上所有向量和b垂直的內積都是零,既: A轉置*b垂直=0 (4)
那麼現在在(3)式兩邊同時左乘一個A轉置,得 : A轉置*Ax = A轉置*b-A轉置*b垂直 (5)
等式右邊最後一項等於0,所以得到 A轉置*Ax = A轉置*b (6)
最後,將等式兩邊同時乘以(A轉置*A)逆 ,得到 :x = (A轉置*A)逆*A轉置*b
這樣最小二乘法的幾何解釋和推導就結束了,當然看完你可能都沒發現這個幾何角度的解釋和“最小二乘”有任何關係,下面解釋一下他們之間的關係。
最小二乘法的定義:
當
時, 取最小值,記作:再看Ax=b,將等式變換過來,這個定義中的argmin其實就是等價於 求argmin(|Ax-b|平方),而Ax-b事實上就是兩個向量的減法,最小二乘就是找到最終最小的那個向量,即向量b在A上的投影。
當然,最小二乘法還可以用求偏導等於0的方法計算,但這種方法很晦澀,十分不優雅。
再囉嗦一句,事實上最小二乘法,和樣本點的高斯分佈求最大似然(ML)有著殊途同歸的一致,而後者的本質是假設觀測點符合在擬合曲線附近的高斯分佈,真是和諧得不可思議。
[1]:https://www.youtube.com/watch?v=Z0wELiinNVQ
[2]:https://www.youtube.com/watch?v=8mAZYv5wIcE&t=24