機器學習中的矩陣方法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 矩陣進行行操作:

四次變換之后, A 就轉化成一個上三角矩陣。並且如果 A 是列向量不相關,則 R 矩陣是非奇異矩陣。

由於 H1, H2, H3, H4 都是標准化正交矩陣,那么 QT 也是標准正交矩陣。

根據矩陣相乘的性質,由於 R 下面都是 0 元素,因此,可以將 Q 矩陣對應分解成 Q1 和 Q2 兩個部分,后面乘以 0 向量的部分可以省略,這就是 thin QR 分解:

上式中 R 的列向量可以看做是以 Q1 列向量為基的子空間的坐標。

 

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 行進行旋轉:

依次進行,直到:

最終得到解集。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM