機器學習中的矩陣方法03:QR 分解

 

1. QR 分解的形式

QR 分解是把矩陣分解成一個正交矩陣與一個上三角矩陣的積。QR 分解常常用來解線性最小二乘法問題。QR 分解也是特定特徵值算法即QR算法的基礎。用圖能夠將分解形象地表示成:算法

其中, Q 是一個標準正交方陣, R 是上三角矩陣。函數

 

2. QR 分解的求解

QR 分解的實際計算有不少方法,例如 Givens 旋轉、Householder 變換,以及 Gram-Schmidt 正交化等等。每一種方法都有其優勢和不足。上一篇博客介紹了 Givens 旋轉和 Householder 變換, 第三種方法線性代數課程裏面已經很是常見。下面用 Householder 變換的方法推導中間的過程。優化

假設 A 是一個 5×4 的矩陣,用 × 號表示本次變換未變化的元素,用 + 號表示本次發生變換的元素, H 矩陣等效於對右側的 A 矩陣進行行操做:3d

四次變換以後, A 就轉化成一個上三角矩陣。而且若是 A 是列向量不相關,則 R 矩陣是非奇異矩陣。orm

因爲 H1, H2, H3, H4 都是標準化正交矩陣,那麼 QT 也是標準正交矩陣。blog

根據矩陣相乘的性質,因爲 R 下面都是 0 元素,所以,能夠將 Q 矩陣對應分解成 Q1 和 Q2 兩個部分,後面乘以 0 向量的部分能夠省略,這就是 thin QR 分解:博客

上式中 R 的列向量能夠看作是以 Q1 列向量爲基的子空間的座標。io

 

3. 用 QR 解決最小二乘法

這個系列的第一篇博客就用 Normal equations 的方法解決了最小二乘的問題,具體來講使用了「僞逆」,可是這種作法存在缺陷,好比計算量大和浮點數運算中 roundoff 的問題。如今咱們嘗試用 QR 的方法來試一試。對於一個 OverDeterminded 的矩陣 A, 最小二乘的問題能夠歸結爲:基礎

將 A 進行 QR 分解,很容易能夠推導出目標函數(殘差的平方):方法

 

其中, 

後面一項是硬傷,沒有辦法優化,令前面一項等於 0, 能夠獲得最小二乘法的 solution:

並且有一個好處是,用 Householder 變換獲得的 P1, P2, P3...等,咱們徹底沒有必要把用 Q = P1P2P3 顯性地求出來,而是將 b 向量添加到 A 矩陣右側, 與 A 一塊兒作 Householder 變換便可:

另一個福利是:因爲 Householder 變換和平面旋轉變換對於浮點運算的 rounding error 問題有優良的性質,QR 分解方法比 Normal equations 的條件數更小, 某些問題的 solution 也更加精確。

 

4. 更新最小二乘的解集

在一些應用裏面,系統要求咱們實時更新解集,可是樣本數據是逐漸產生的,也就是說矩陣 A 和向量 b 是逐漸變長的,如何在已有的解集上進行更新?

問題能夠描述以下:假設如今已經將產生的數據進行了 QR 分解,新產生的數據是 a 和 beta,

因爲中間的 Q_2^T b 對於運算沒有做用,咱們暫且將它扔掉,用 × 表示不變的元素,用 + 表示變化的元素,咱們的主要思路是用 Givens 旋轉操做(上一篇博客有介紹,實際上 Householder 變換和 Givens 旋轉都是左乘一個標準化的正交矩陣,在這裏是等效的),先對第 1 行和第 n+1 行進行旋轉,而後對第 2 行和地 n+1 行進行旋轉... 一步一步求出更新後的 R 和 Q1b:

第一行和第 n+1 行進行旋轉:

第二行和第 n+1 行進行旋轉:

依次進行,直到:

最終獲得解集。

相關文章
相關標籤/搜索