奇異值分解(SVD(數學概念奇異值分解的英文縮寫))

奇異值分解(數學概念奇異值分解的英文縮寫)

SVD(數學概念奇異值分解的英文縮寫)一般指本詞條

奇異值分解(Singular Value Decomposition)是線性代數中一種重要的矩陣分解,奇異值分解則是特徵分解在任意矩陣上的推廣。在信號處理統計學等領域有重要套用。

基本介紹

  • 中文名:奇異值分解
  • 外文名:Singular Value Decomposition
  • 特徵:對矩陣的擾動不敏感
  • 套用矩陣分解
  • 套用學科:線性代數
  • 所屬領域:信號處理、統計學
基本介紹,理論描述,幾何意義,套用,求偽逆,平行奇異值,矩陣近似值,編程,

基本介紹

奇異值分解在某些方面與對稱矩陣Hermite矩陣基於特徵向量的對角化類似。然而這兩種矩陣分解儘管有其相關性,但還是有明顯的不同。譜分析的基礎是對稱陣特徵向量的分解,而奇異值分解則是譜分析理論在任意矩陣上的推廣。

理論描述

假設M是一個m×n階矩陣,其中的元素全部屬於域 K,也就是實數域或複數域。如此則存在一個分解使得
其中U是m×m階酉矩陣;Σ是半正定m×n階對角矩陣;而V*,即V的共軛轉置,是n×n階酉矩陣。這樣的分解就稱作M的奇異值分解。Σ對角線上的元素Σi,其中Σi即為M的奇異值。
常見的做法是為了奇異值由大而小排列。如此Σ便能由M唯一確定了。(雖然U和V仍然不能確定)
直觀的解釋
在矩陣M的奇異值分解中
·U的列(columns)組成一套對M的正交"輸入"或"分析"的基向量。這些向量是MM*的特徵向量
·V的列(columns)組成一套對M的正交"輸出"的基向量。這些向量是M*M的特徵向量。
·Σ對角線上的元素是奇異值,可視為是在輸入與輸出間進行的標量的"膨脹控制"。這些是M*M及MM*的奇異值,並與U和V的列向量相對應。
奇異值和奇異向量, 以及他們與奇異值分解的關係
一個非負實數σ是M的一個奇異值僅當存在Km 的單位向量u和Kn的單位向量v如下 :
其中向量u 和v分別為σ的左奇異向量和右奇異向量。
對於任意的奇異值分解,矩陣Σ的對角線上的元素等於M的奇異值。U和V的列分別是奇異值中的左、右奇異向量。因此,上述定理表明:
(1)一個m × n的矩陣至多有 p = min(m,n)個不同的奇異值;
(2)總是可以找到在Km 的一個正交基U,組成M的左奇異向量;
(3)總是可以找到和Kn的一個正交基V,組成M的右奇異向量。
如果一個奇異值中可以找到兩個左(或右)奇異向量是線性相關的,則稱為退化。
退化的奇異值具有唯一的左、右奇異向量,取決於所乘的單位相位因子eiφ(根據實際信號)。因此,如果M的所有奇異值都是非退化且非零,則它的奇異值分解是唯一的,因為U中的一列要乘以一個單位相位因子且同時V中相應的列也要乘以同一個相位因子。
根據定義,退化的奇異值具有不唯一的奇異向量。因為,如果u1和u2為奇異值σ的兩個左奇異向量,則兩個向量的任意規範線性組合也是奇異值σ一個左奇異向量,類似的,右奇異向量也具有相同的性質。因此,如果M 具有退化的奇異值,則它的奇異值分解是不唯一的。

幾何意義

因為UV 向量都是單位化的向量, 我們知道U的列向量u1,...,um組成了K空間的一組標準正交基。同樣,V的列向量v1,...,vn也組成了K空間的一組標準正交基(根據向量空間的標準點積法則)。
線性變換T:即KK,把向量Nx變換為Mx。考慮到這些標準正交基,這個變換描述起來就很簡單了:T(vi) = σi ui, for i = 1,...,min(m,n),其中σi對角陣Σ中的第i個元素;當i > min(m,n)時,T(vi) = 0。
這樣,SVD理論的幾何意義就可以做如下的歸納:對於每一個線性映射T: KKTK的第i個基向量映射為K的第i基向量的非負倍數,然後將餘下的基向量映射為零向量。對照這些基向量,映射T就可以表示為一個非負對角陣。

套用

求偽逆

奇異值分解可以被用來計算矩陣的偽逆。若矩陣 M 的奇異值分解為
,那么 M 的偽逆為
其中
的偽逆,並將其主對角線上每個非零元素都求倒數之後再轉置得到的。求偽逆通常可以用來求解線性最小平方、最小二乘法問題。

平行奇異值

把頻率選擇性衰落信道進行分解。

矩陣近似值

奇異值分解在統計中的主要套用為主成分分析(PCA),一種數據分析方法,用來找出大量數據中所隱含的“模式”,它可以用在模式識別數據壓縮等方面。PCA算法的作用是把數據集映射到低維空間中去。 數據集的特徵值(在SVD中用奇異值表征)按照重要性排列,降維的過程就是捨棄不重要的特徵向量的過程,而剩下的特徵向量組成的空間即為降維後的空間。

編程

幾種程式語言中計算SVD的函式範例
matlab:
[b c d]=svd(x)
OpenCV:
void cvSVD( CvArr* A, CvArr* W, CvArr* U=NULL, CvArr* V=NULL, int flags=0 )

相關詞條

熱門詞條

聯絡我們