機器學習中的矩陣方法01:線性系統和最小二乘

 

說明: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.spa

A = LU. 其中 M, L 互爲逆矩陣3d

圖片表示以下:blog

因爲要確保 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 存在兩個缺陷:

  1. A^T A 會致使信息的丟失。假設 A 中某一項是一個計算機恰好能表示的浮點數,A 乘以 A 的轉置後浮點數的平方可能超出精度而被丟失,從而致使 A^T A 是奇異矩陣沒法求解,應對的方法是後面要學的奇異值分解。
  2. A^T A 的條件數是 A 的平方。系統不穩定性變大了。應對的方法是對數據進行中心化預處理,這樣作的目的是要增長基向量的正交性。
相關文章
相關標籤/搜索