說明:Matrix Methods in Data Mining and Pattern Recognition 讀書筆記
非常 nice 矩陣在線計算器,網址:http://www.bluebit.gr/matrix-calculator/.
1. LU Decomposition
假設現在要解一個線性系統:
Ax = b,
其中 A 是 n×n 非奇異方陣,對於任意的向量 b 來說,都存在一個唯一的解。
回顧我們手工求解這個線性方程組的做法,首先將矩陣 A 行之間進行加減,將 A 矩陣轉化為一個上三角矩陣,然后從下往上將未知數一個一個求解出來, 這就是高斯消元法。
實際上,矩陣等價於左乘一個單位矩陣,行變換操作可以直接體現在左乘的單位矩陣上。比如要將矩陣 A 第二行減去第一行,等價於將左乘的單位矩陣的第二行減去第 一行,當然矩陣 A 最終轉化為上三角矩陣 U 比這個復雜的多,我們將左乘的單位矩陣最終等價變換后得到的矩陣命名為 M ,顯然, M 是一個下三角矩陣。
MA = U.
A = LU. 其中 M, L 互為逆矩陣
圖片表示如下:
由於要確保 A 轉化后的第一行的第一項不為 0, 第二行的第二項不為 0, 第三行…… 因此, A 前面應該再加上一個行與行之間進行交換的矩陣 P。因此,LU 分解的公式又可以寫成:
PA = LU
P 是 permutation matrix, L 是 lower triangular matrix, U 是 upper triangular matrix. 有些書將置換矩陣 P 放置在等號右邊。比如這個矩陣在線計算器默認的就是將 P 放置在矩陣 L 的前面。不妨利用這個工具測試一下 LU 分解的正確性。
如果 A 是對稱正定矩陣,L 和 U 正好是互為轉置,差別在於對應的行存在倍數關系,這種那個倍數關系可以用對角線矩陣來實現,所以, LU 分解就可以寫成:
將對角線矩陣均攤到兩邊,公式可以轉化為:
其中,矩陣 U 是上三角矩陣,這個就是 Cholesky decomposition,這個分解方法有點像求實數的平方根。同時,該分解方法的計算量只有 LU 分解的一半。
2. 條件數
條件數是線性方程組Ax=b的解對b中的誤差或不確定度的敏感性的度量。數學定義為矩陣A的條件數等於A的范數與A的逆的范數的乘積,即cond(A)=‖A‖·‖A-1‖,對應矩陣的3種范數,相應地可以定義3種條件數。
matlab 里面運算函數:cond(A,2)或cond(A):2范數
一個極端的例子,當A奇異時,條件數為無窮,這時即使不改變b,x也可以改變。奇異的本質原因在於矩陣有0特征值,x在對應特征向量的方向上運動不改變Ax的值。如果一個特征值比其它特征值在數量級上小很多,x在對應特征向量方向上很大的移動才能產生b微小的變化,這就解釋了為什么這個矩陣為什么會有大的條件數,事實上,正規陣在二范數下的條件數就可以表示成 abs(最大特征值/最小特征值)。——摘自百度百科
在計算機編程環境中,數據都是有浮點類型表示,精度有限,存在干擾,因此在解線性方程的時候都會存在誤差。
3. 最小二乘的問題
在機器學習里面,使用線性分類器或者線性回歸方法時經常會遇到最小二乘的問題(分類也可以看做一種特殊的回歸,目標值是 1 和 -1 或者 0 和 1)。現有下面這個問題,左邊是樣本點的兩個屬性,右邊是回歸值,如何確定 e 和 k?
這個線性系統可以表示為:
Ax = b
其中,A 的行數大於列數,這種情況又叫做 overdetermined。假設 A 矩陣是 3×2 的矩陣,令 A = (a1, a2), Ax 表示這兩個基向量的線性組合(span),在幾何上是三維空間里的一個平面。而 b 向量則是三維空間里面的一個點,這個點如果不在 span{a1, a2} 上,則該方程不存在正確的解。現在我們的任務是令殘差向量 r = b - Ax 最小:
LMS 算法中利用梯度下降法可以達到目標函數的最優值,但是這個目標函數的真正意義是什么?
幾何上的直觀感受就是,如果殘差向量正好垂直於 a1, a2 組成的平面,此時達到最優:
殘差向量 r = b - Ax 與 a1, a2 組成的平面垂直,則與向量 a1, a2 也是相互垂直的:
展開寫成如下公式:
如果 A 矩陣的列向量是線性無關的,那么上式有唯一的解:
用這個方法解決 least squares problems 存在兩個缺陷:
- A^T A 會導致信息的丟失。假設 A 中某一項是一個計算機剛好能表示的浮點數,A 乘以 A 的轉置后浮點數的平方可能超出精度而被丟失,從而導致 A^T A 是奇異矩陣無法求解,應對的方法是后面要學的奇異值分解。
- A^T A 的條件數是 A 的平方。系統不穩定性變大了。應對的方法是對數據進行中心化預處理,這樣做的目的是要增加基向量的正交性。