1. 程式人生 > >矩陣的特徵分解和奇異值(SVD)分解——求法和意義

矩陣的特徵分解和奇異值(SVD)分解——求法和意義

目錄

一、特徵分解(特徵值、特徵向量)

二、正定、半正定、負定

三、奇異值(SVD)分解


一、特徵分解(特徵值、特徵向量)

許多數學物件可以通過將它們分解成多個組成部分或者找到它們的一些屬性以便更好地理解,這些屬性是通用的,而不是由我們選擇表示它們的方式產生的。

例如,整數可以分解為質因數。我們可以用十進位制或二進位制等不同方式表示整 數 12,但是 12 = 2 × 2 × 3 永遠是對的。從這個表示中我們可以獲得一些有用的信 息,比如 12 不能被 5 整除,或者 12 的倍數可以被 3 整除。正如我們可以通過分解質因數來發現整數的一些內在性質,我們也可以通過分解矩陣來發現矩陣不明顯的函式性質

特徵分解(eigende composition)是使用最廣的矩陣分解之一,即我們將矩陣分解成一組特徵向量和特徵值。這就是我們中學最早接觸的特徵分解方法,也是大學矩陣論或線性代數的基本功,大家回顧一下:

方陣 A 的特徵向量(eigenvector)是指與 A 相乘後相當於對該向量進行縮放的非零向量 v:

標量 λ 被稱為這個特徵向量對應的特徵值(eigenvalue)。類似地,我們也可以定義特徵向量(left eigenvector).

如果 v 是 A 的特徵向量,那麼任何縮放後的向量 sv (s ∈ R,s ̸= 0) 也是A的特徵向量。此外,sv 和 v 有相同的特徵值。基於這個原因,通常我們只考慮單位特徵向量。

假設矩陣 A 有 n 個線性無關的特徵向量 {v(1),...,v(n)},對應著特徵值 {λ1,...,λn}。我們將特徵向量連線成一個矩陣,使得每一列是一個特徵向量:

類似地,我們也可以將特徵值連線成一個向量:

因此 A 的特徵分解(eigendecomposition)可以記作:

diag表示對角矩陣。

不是每一個矩陣都可以分解成特徵值和特徵向量。在某些情況下,特徵分解存在,但是會涉及複數而非實數。

具體來講,每個實對稱矩陣都可以分解成實特徵向量和實特徵值:

其中 Q 是 A 的特徵向量組成的正交矩陣,Λ 是對角矩陣。特徵值 Λi,i 對應的特徵向量是矩陣 Q 的第 i 列,記作 Q:,i。因為 Q 是正交矩陣,我們可以將 A 看作沿方向v(i) 延展λi 倍的空間

上圖展示的是特徵向量和特徵值的作用效果的一個例項。在這裡,矩陣 A 有兩個標準正交的特徵向量,對應特徵值為 λ1 的 v(1) 以及對應特徵值為 λ2 的 v(2)。(左) 我們畫出了所有的單位向量 u ∈ \mathbb{R}^{2} 的集合,構成一個單位圓。(右) 我們畫出了所有的 Au 點的集合。通過觀察 A 拉伸單位圓的方式,我們可以看到它將 v(i) 方向的空間拉伸了 λi 倍

雖然任意一個實對稱矩陣 A 都有特徵分解,但是特徵分解可能並不唯一。如果兩個或多個特徵向量擁有相同的特徵值,那麼在由這些特徵向量產生的生成子空間中,任意一組正交向量都是該特徵值對應的特徵向量。因此,我們可以等價地從這些特徵向量中構成 Q 作為替代。按照慣例,我們通常按降序排列 Λ 的元素。在該約定下,特徵分解唯一當且僅當所有的特徵值都是唯一的。

二、正定、半正定、負定

矩陣的特徵分解給了我們很多關於矩陣的有用資訊。矩陣是奇異的當且僅當含 有零特徵值。實對稱矩陣的特徵分解也可以用於優化二次方程f(x) = x^{T}Ax,其中 限制||x||2 = 1。當 x 等於 A 的某個特徵向量時,f 將返回對應的特徵值。在限制條件下,函式 f 的最大值是最大特徵值,最小值是最小特徵值。

所有特徵值都是正數的矩陣被稱為正定(positive definite);所有特徵值都是非 負數的矩陣被稱為半正定(positive semidefinite)。同樣地,所有特徵值都是負數的矩陣被稱為負定(negative definite);所有特徵值都是非正數的矩陣被稱為半負定(negative semidefinite)。半正定矩陣受到關注是因為它們保證 ∀x,x^{T}Ax ≥ 0。此外,正定矩陣還保證x^{T}Ax= 0 ⇒ x = 0.

三、奇異值(SVD)分解

還有另一種分解矩陣的方法,被稱為 奇異值分解(singular value decomposition, SVD),將矩陣分解為奇異向量(singular vector)奇異值(singular value)。特徵值分解是一個提取矩陣特徵很不錯的方法,但是它只是對方陣而言的,在現實的世界中,我們看到的大部分矩陣都不是方陣,比如說有N個學生,每個學生有M科成績,這樣形成的一個N * M的矩陣就不可能是方陣,我們怎樣才能描述這樣普通的矩陣呢的重要特徵呢?奇異值分解可以用來幹這個事情,奇異值分解是一個能適用於任意的矩陣的一種分解的方法。

通過奇異值分解,我們會得到一些與特徵分解相同型別的資訊。然而,奇異值分解有更廣泛的應用。每個實數矩陣都有一個奇異值分解,但不一定都有特徵分解。例如,非方陣的矩陣沒有特徵分解,這時我們只能使用奇異值分解。

回想一下,我們使用特徵分解去分析矩陣 A 時,得到特徵向量構成的矩陣 V 和特徵值構成的向量 λ,我們可以重新將 A 寫作:

奇異值分解是類似的,只不過這回我們將矩陣 A 分解成三個矩陣的乘積:

這些矩陣中的每一個經定義後都擁有特殊的結構。矩陣 U 和 V 都定義為正交矩陣,而矩陣 D 定義為對角矩陣。注意,矩陣 D 不一定是方陣。

對角矩陣 D 對角線上的元素被稱為矩陣 A 的奇異值(singular value)。矩陣 U 的列向量被稱為 左奇異向量(left singular vector),矩陣 V 的列向量被稱 右奇異向量(right singular vector)

事實上,我們可以用與 A 相關的特徵分解去解釋 A 的奇異值分解。即:U是AA^{T} 的特徵向量。V是A^{T}A 的特徵向量。A 的非零奇異值即D中非零值是A^{T}A特徵值的平方根,同時也是AA^{T}特徵值的平方根。這告訴了我們怎麼求U、D、V。

奇異值分解可以用於降噪、影象壓縮、推薦演算法等中。大家可以google搜尋SVD應用的具體的例子。此處就不多贅述了!