矩陣的分解:滿秩分解和奇異值分解

本文主要介紹矩陣的兩種經典的分解算法:滿秩分解和奇異值分解。這兩塊內容很是基礎,同時卻又很是重要,在機器學習,模式識別,人工智能等領域有着很是普遍的應用。html

滿秩分解

定義與性質

定義1 滿秩分解:對於 m × n 的矩陣 A ,假設其秩爲 r ,若存在秩一樣爲 r 兩個矩陣: F m × r (列滿秩)和 G r × n (行滿秩),使得 A = F G ,則稱其爲矩陣 A 的滿秩分解。web

定理1:滿秩分解有兩個性質,算法

  • 滿秩分解不惟一:假設存在 r 階可逆方陣 D ,則 A = F G = F ( D D 1 ) G = ( F D ) ( D 1 G ) = F G
  • 任何非零矩陣必定存在滿秩分解。證實以下;

假設存在初等變換矩陣 B m × m ,使得機器學習

(1) B A = ( G O )

其中 G 是個 m × r 的行滿秩矩陣。由上面的公式,能夠推出,svg

(2) A = B 1 ( G O ) = ( F | S ) ( G O ) = F G

公式第二行中,咱們將 B 1 分塊爲 ( F | S ) ,其中 F m × r 矩陣(秩爲 r ), G r × n 矩陣(秩爲 r )。學習

滿秩分解的計算

若是能理解上面的證實過程,那麼計算滿秩分解就很容易了,由於方法與證實思路是一致的。人工智能

舉個例子來講明,如今要計算下面矩陣 A 的滿秩分解:atom

(3) A = ( 1 0 1 2 1 2 1 1 2 2 2 1 )

首先,對 A 進行初等變換,獲得行滿秩矩陣 G 和初等矩陣 B .spa

(4) A = ( 1 0 1 2 1 0 0 1 2 1 1 0 1 0 2 2 2 1 0 0 1 ) ( 1 0 1 2 1 0 0 0 2 0 3 1 1 0 0 0 0 0 1 1 1 )

可見,.net

(5) B = ( 1 0 0 1 1 0 1 1 1 ) , G = ( 1 0 1 2 0 2 0 3 )

接着,能夠算出

(6) B 1 = ( 1 0 0 1 1 0 2 1 1 ) = ( F | S )

由於 r = 2 ,因此能夠獲得

(7) F = ( 1 0 1 1 2 1 )

所以

(8) A = F G = ( 1 0 1 1 2 1 ) ( 1 0 1 2 0 2 0 3 )

另外一種計算滿秩分解的方法是用矩陣 A 的Hermite標準型。具體作法以下。

Hermite標準型

先給出Hermite標準型的定義。

定義2 Hermite標準型:對於 m × n 的矩陣 H ,假設其秩爲 r ,若 H 知足如下3個條件,則稱之爲Hermite標準型。

  • H 的前 r 行中,每行都至少含一個非零元素,且每行的第一個非零元是1,然後 m r 行都是零元;
  • 假設第 i 行的第一個非零元(就是1)在第 j i 列,則 j 1 < j 2 < < j r
  • H j 1 , j 2 , , j r 列是單位矩陣 E m 的前 r 行(這個條件實際上覆蓋了前2個條件);

由定義能夠看出Hermite標準型就是將秩爲 r m × n 矩陣經初等變換而成的階梯型矩陣。因此也叫作Hermite最簡型。

算出Hermite標準型後,對於矩陣的滿秩分解 A = F G 來講,矩陣 F 就是矩陣 A j 1 , j 2 , , j r 列構成的 m × r 矩陣,而 G 則是 H 的前 r 行構成的矩陣。

還舉上面的例子,先變換獲得矩陣 A 的Hermite標準型:

(9) A = ( 1 0 1 2 1 2 1 1 2 2 2 1 ) ( 1 0 1 2 0 1 0 3 / 2 0 0 0 0 ) = H

H 前兩行第一個非零元所在的列號是1列和2列,因此

(10) F = ( 1 0 1 2 2 2 ) , G = ( 1 0 1 2 0 1 0 3 / 2 )

特徵值分解(EVD)

特徵值分解是對於對稱矩陣的一個經典的分解算法,它也是後面我要說的奇異值分解的基礎。因此有必要專門列一個小節,大體介紹一下。

正交矩陣

在介紹特徵值分解以前,先科普一個概念——正交矩陣。

定義3 正交矩陣:指知足 A A T = E 的矩陣 A ,其中 E 爲單位矩陣。

正交矩陣是歐式空間的叫法,在酉空間(即複數域上的歐式空間)叫酉矩陣。從定義也能看出正交矩陣有着不少特殊的性質:

  • A 的各行(列)是單位向量且兩兩正交;
  • A 在任意一組標準正交基下對應的線性變換爲正交變換(即只旋轉向量,卻不改變向量之間的夾角和向量長度)
  • | A | = ± 1
  • A T = A 1

正交陣的概念先擺在這,後面用到我再提。

特徵值與特徵向量

定義4 特徵值與特徵向量:設 A 爲數域P上的線性空間V的一個線性變換,若是對於P中一數 λ 0 ,存在非零向量 ξ ,使得下式成立,那麼 λ 0 稱爲 A 的一個特徵值,而 ξ 稱爲 A 的屬於特徵值 λ 0 的一個特徵向量,即

(11) A ξ = λ 0 ξ

計算一個線性變換 A 的特徵值與特徵向量的方法能夠分爲如下三步。

  1. 指定線性空間內的一組基,並寫出 A 在這組基下的矩陣 A
  2. 求出 A 的特徵多項式 | λ E A | 在數域P的所有根(幾重根就算幾個),這些根就是 A 的所有特徵值;
  3. 把所得的特徵值逐個帶入 A X = λ i X ,求出關於每一個特徵值的一組基礎解系,也就是所有的線性無關的特徵向量;

我舉例解釋一下:假設有線性變換 A 在基 ε 1 , ε 2 , ε 3 下的矩陣是 A ,如今求它的特徵值和特徵向量。

(12) A = ( 1 2 2 2 1 2 2 2 1 )

其特徵多項式 | λ E A | = ( λ + 1 ) 2 + ( λ 5 ) ,解得 λ 1 = 1 (二重), λ 2 = 5 。將 λ 1 = 1 代入方程組 A X = X ,解得基礎解系是:

(13) ( 1 0 1 ) , ( 0 1 1 )

所以,能夠獲得屬於特徵值-1的兩個線性無關的特徵向量: ξ 1 = ε 1 ε 3 , ξ 2 = ε 2 ε 3 .
同理,也能夠求出屬於特徵值5的特徵向量 ξ 3 = ε 1 + ε 2 + ε 3 .

瞭解了特徵值和特徵向量,能夠給出特徵子空間和矩陣跡的概念了,以下。

定義5 特徵子空間:咱們把屬於特徵值 λ 0 的全部特徵向量加上零向量構成的空間稱爲 λ 0 對應的特徵子空間(記爲 V λ 0 ), V λ 0 的維數就是屬於 λ 0 的全部線性無關的特徵向量的個數

定義6 矩陣的跡:矩陣 A 的全體特徵值的和爲 A 的跡,記爲 T r ( A ) 。實際上,經過證實咱們還能夠知道 T r ( A ) 也等於 A 的主對角線上全部元素的和,即 T r ( A ) = a 11 + a 22 + + a n n

下面我再補充一個重要的概念——類似矩陣。

類似矩陣

定義7 類似矩陣 A , B 爲兩個 n 階矩陣,若是存在 n 階矩陣 X 使得 B = X 1 A X 成立,則 A , B 被稱爲是類似的,記爲 A ~ B

上面說到每個線性變換在不一樣基下對應着不一樣的矩陣,那這些矩陣有什麼關係呢?有以下定理:

定理2:線性變換在不一樣的基下所對應的矩陣是類似的,反之,若兩個矩陣類似,則它們能夠被看做是同一個線性變換在不一樣基下的矩陣。

理解了類似矩陣的概念,咱們接着探究類似矩陣與特徵多項式的關係,有以下定理:

定理3:類似的矩陣有相同的特徵多項式。證實以下,

咱們知道,若 A ~ B ,則有可逆矩陣 X ,使得 B = X 1 A X ,那能夠作出以下的推導:

(14) | λ E B | = | λ E X 1 A X | = | X 1 ( λ E A ) X | = | X 1 | | λ E A | | X | = | λ E A |

根據定理2,咱們知道,同一個線性變換在不一樣的基下所對應的矩陣是類似的,而定理3告訴咱們類似的矩陣有相同的特徵多項式,那也就說明了一個問題:即線性變換矩陣的特徵多項式與選擇的基是無關的。

對角矩陣

對角矩陣即除了主對角線中的元素外,其餘元素都爲0的矩陣。對角矩陣和線性變換的結合很是緊密,有以下定理存在:

定理4:線性變換 A 在某一組基下式對角矩陣的充要條件是, A n 個線性無關的特徵向量。

定理5:屬於不一樣特徵值的特徵向量是線性無關的。

特徵值分解的計算

咱們知道對於一個 n × n 的對稱矩陣 A 來講(即 A T = A ),它與對角矩陣是類似的(證實我略了),那他能夠被看做是一個對角陣對應的線性變換 A 在另外一組基下的矩陣,由於對角陣有 n 個線性無關的特徵向量,而屬於不一樣特徵值的特徵向量是線性無關的,因此咱們說對稱陣 A 必定有 n 個特徵值(重根算多個)。

綜上,能夠獲得:

(31) A X 1 = λ 1 X 1 A X 2 = λ 1 X 2 A X n = λ 1 X n

化簡一下,上式能夠寫成: A U = U Λ ,其中 U = ( X 1 , X 2 , , X n )

(16) Λ = ( λ 1 0 0 0 λ 2 0 0 0 λ n )

由於對稱陣有一個性質:不一樣特徵值對應的特徵向量兩兩正交。因此此處 U 即爲正交陣(正交陣的概念上面說了,至於正交陣的每一列是單位向量的問題,你對特徵值作處理就完了)。

綜上,一個對稱陣的特徵值分解能夠寫成: A = U Λ U 1 = U Λ U T ,其中 U 是正交矩陣,每一個列向量有 A 對應的歸一化的特徵向量構成。

如今對於任意的 n 維向量 Y 來講,能夠經過矩陣 A 實現相應的線性變換。

(17) A Y = U Λ U T Y

其中 U T Y 至關因而對 Y 作了一個正交變換。根據前面介紹的正交變換相關知識,正交變換至關因而對向量 Y 換了一個座標系,而新座標系的基就是 A 的全部特徵向量(即 U 的全部列向量),所以, U T Y = ( a 1 , , a n ) a 1 , , a n 至關因而 Y 在新座標系下的座標.

繼續化簡上面的公式,

(18) A Y = U Λ U T Y = U Λ ( a 1 , , a n ) = U ( λ 1 0 0 0 λ 2 0 0 0 λ n ) ( a 1 , , a n ) = U ( λ 1 a 1 λ 2 a 2 λ 1 a 1 )

λ i a i 至關因而對向量 y 在新的座標系下沿對應的軸方向進行了拉伸或者壓縮,並無改變向量實際的方向,最後再左乘 U 至關於對當前的向量再次進行正交變換,由於 U U T 的逆矩陣,因此這是一個與 U T 的變換相反的變換。綜上,對陣矩陣 A 所對應的變換實際上能夠將一組正交基映射爲另外一組正交基。

奇異值分解(SVD)

奇異值

上面說了一大推,其實就是介紹了對陣矩陣的一個性質:即把一組正交基映射爲另外一組正交基。對於任意的 m × n 的矩陣 A A 能夠將 n 維空間中的向量映射到 k 維空間中( k m ),那麼如今來探究可否找到這樣一組 n 維正交基,使之通過 A 的變換後,仍是正交基。尋找這樣正交基的過程,就是SVD的核心思路。

好了,先假設存在這樣的正交基 ( V 1 , V 2 , , V n ) | V i | = 1 ,通過 A 映射後變爲 ( A V 1 , A V 2 , , A V n ) (實際上,這裏的 A V i 都是 m 維向量)。既然他們兩兩正交,那麼就得知足下面的公式。

(19) ( A V i ) ( A V j ) = ( A V i ) T A V j = V i T ( A T A ) V j = 0

如今來證實這個公式是成立的(成立的話表示正交基找到了)。由於我在假設中,設置的 ( V 1 , V 2 , , V n ) 是一組正交基,因此, V i T V j = 0 。我把這個結論先放這(下面的公式要用)。接着想,如今 A T A 是個 n × n 的對稱矩陣。由於對稱矩陣必定有 n 個特徵值,其特徵向量兩兩正交,那我就假設 ( V 1 , V 2 , , V n ) A T A 的特徵向量,能夠獲得

(20) V i T ( A T A ) V j = V i T λ j V j = λ j V i T V j = 0

這樣我就證實了 ( A V 1 , A V 2 , , A V n ) 是一組正交向量。再對這組正交向量作歸一化處理,構成一組新的正交基。先計算每一個 A V i 的模數:

(21) | A V i | 2 = λ i V i T V i = λ i

取單位向量後,獲得 u i = 1 λ i A V i ,其中 σ i = λ i 被稱爲是矩陣 A 的奇異值,它實際上就是對稱陣 A T A 的特徵值的算數平方根。而 ( u 1 , , u n ) 則是一組通過歸一化處理的,兩兩正交的 m 維向量的集合,在這個集合當中,咱們固然能夠找到一組 k 維空間的正交基( k m , k n )。

上一段的最後一句話能夠這樣理解:假設 m = 3 , k = 2 , n = 3 u 1 = ( 1 , 0 , 0 ) , u 2 = ( 0 , 1 , 0 ) , u 3 = ( 0 , 0 , 0 ) u 1 , u 2 , u 3 兩兩正交,咱們天然能夠找到 k = 2 維空間的正交基: u 1 = ( 1 , 0 ) , u 2 = ( 0 , 1 )

分解過程

上面獲得的正交基對咱們很是重要,它能夠用來作奇異值分解。咱們先明確這樣一個關係: σ i u i = A V i , i { 1 , , k } ,如今我作以下兩組正交基的拓展工做:

  • 生成 ( u 1 , , u m ) 。它是由 ( u 1 , , u k ) 拓展生成的 m 維空間的正交基
  • 已知 ( V 1 , , V n ) n 維空間中一組兩兩正交的向量,其中, ( V k + 1 , , V n ) 使得 A V i = 0 , i { k + 1 , , n }

那麼,有下面的公式成立:

(22) A ( V 1 , , V k | V k + 1 , , V n ) = ( A V 1 , , A V k | O , , O ) = ( u 1 , , u k | u k + 1 , , u m ) ( σ 1 O σ k O O )

繼而能夠獲得奇異值分解的公式:

(23) A = U Σ V T = ( u 1 , , u m ) ( σ 1 σ k O ) ( V 1 V n )

其中 U m × m 的正交陣, Σ m × n 的對角陣, V n × n 的正交陣。

更具體地說, U 是由 A T A 的特徵向量通過 A 變換而來的標準化的 m × m 正交陣, Σ 是由矩陣 A T A 的特徵值構成的的算數平方根構成的 m × n 的對角陣(秩爲 k ), V 是由 A T A 的特徵向量構成的 n × n 的正交陣。

計算實例

我舉個例子,看看SVD究竟是如何計算的。如今分解矩陣

(24) A = ( 0 1 1 1 1 0 )

根據 A ,可知參數 m = 3 , n = 2 , k = 2 .

先計算 A T A 的特徵值和對應的特徵向量:

(25) λ 1 = 3 , V 1 = ( 1 2 1 2 ) , λ 2 = 1 , V 2 = ( 1 2 1 2 )

根據上面的分析,這裏 V 1 , V 2 構成了奇異值分解中的矩陣 V

再計算奇異值,也就是 A T A 的特徵值,解得 λ 1 = 3 , λ 2 = 1 , λ 3 = 0 。其中 λ 1 , λ 2 構成了對角矩陣主對角線上的元素。

最後計算 V 1 , V 2 通過 A 變換後的向量。固然,此時只有 k = 2 m 維向量,而咱們須要 m m 維向量去構造矩陣 U ,你能夠計算 A V i ,而後再使用正交基的擴充方法,可是有點複雜,一種更簡單的思路是,既然 A A T m × m 對稱陣,而 u 1 , , u m A A T 的特徵向量,因此直接計算 A A T 的特徵向量,再作歸一化處理便可:

(26) u 1 = ( 1 6 2 6 1 6 ) , u 2 = ( 1 2 0 1 2 ) , u 3 = ( 1 3 1 3 1 3 )

u 1 , u 2 , u 3 構成了奇異值分解中的矩陣 U .

綜上,矩陣 A 被以下分解:

(27) A = ( 1 6 1 2 1 3 2 6 0 1 3 1 6 1 2 1 3 ) ( 3 0 0 1 0 0 ) ( 1 2 1 2 1 2 1 2 )

結論:最後再把奇異值分解總結一下,任意 m × n 矩陣 A ,能夠被分解爲 A = U Σ V T ,其中,

  • U m × m 矩陣,每一個列向量由對稱陣
相關文章
相關標籤/搜索