最近讀到了machine learning的其中一個和統計有關的算法:線性回歸,在此將其與線性代數相關的原理記錄下,避免以後忘記
(絕對不是因為網上教程都太難了花了我五輩子時間才理解)
首先,一開始想做的事情是給一些資料點,找到一條線滿足裡面的所有點,但是事情總不如希望發展,不太可能有完美的一條線吻合資料點,於是我們就希望找到一條線能夠使這條線的"錯誤"最小。
以線性代數的語言來看,Ax=b 即是要解這種線性的問題,但現在的問題是 Ax!=b ,所以問題變成要使 b-Ax 最小,其中的一種方法就是最小平方法,也就是使 ||b-Ax||^2 最小。
現在先假設我們有的 x hat 經過A會映射至p,即 A(x hat) = p ,而誤差 e = b - p ,那麼,直觀上來看最小的e應該要和p正交,即是p應為b投影至C(A)的投影向量。
再令P為正交投影至C(A)的變換矩陣,即 p = Pb ,P會滿足P^2 = P = P^T (原諒我不會上標 P^T是P的轉置矩陣的意思)
因此 P(b - p) = p - p = 0 ,即是說 b - p 向量經過P映射到C(A)會是一個零向量,即代表 b - p 屬於 P的Nullspace,寫為N(P)。
有了上述的條件後,再由以下的兩個條件即可得出答案。
1.C(P) = C(A)
假設 x 屬於 C(A),那麼Px = x,則 x 屬於C(P),可知C(A)包含於C(P)
假設 x 屬於C(P),那麼Py = x,則 x 屬於C(A),可知C(P)包含於C(A)
綜上判斷,C(P) = C(A)
2.利用 P^T = P 以及 1 的結果,N(P) = C(P^T) 的正交補集 = C(P) 的正交捕集 = C(A) 的正交捕集 = N(A^T),即得結果
N(P) = N(A^T)
綜合以上幾點,我們知道b-p屬於N(P),也即是b-p屬於N(A^T),式子即是
A^T(b - p) = 0
將式子中的p拆開移項後得 A^T(b) = A^T(A)(x hat),於是,答案呼之欲出。
但事情還沒結束,大部分的時候,((A^T)(A))^(-1) 是存在的,所以可以安心的丟過去,變成
x hat = ((A^T)(A))^(-1)(A^T)(b)
但有時候(A^T)(A)的反矩陣是不存在的,但我們仍然想要找出x hat,而這牽涉到更深層的線性代數領域:pseudo inverse matrix (中文好像是偽逆矩陣來著),本人還沒有心力去了解它,故在此不做分享。
以上就是以線性代數的觀點來看線性回歸的樣子;在機器學習的領域上面,矩陣A代表很多的input x,而x即為欲求得的權重w,b則為那些input x所對應的值y。
在看了林教授的機器學習基石後,對於線性回歸的原理還不甚了解,於是去閱讀了很多線性代數方面相關的資料,把以前學過的線性代數又拉回來了一些呢!
只是林教授使用了另一種觀點來證出x hat,那是因為在距離b-p要最短的情況下,我們只要去找||b-p||^2的最小值就好,即是對每項偏微分要等於零,但我覺得微分這種東西畢竟不是那麼好理解,而且向量的微分又是一個不熟悉的範疇,故在此是參考了以下這網站的寫法: