定理:設A爲m*n階復矩陣,則存在m階酉陣U和n階酉陣V,使得:
A = U*S*V’
其中S=diag(σi,σ2,……,σr),σi>0(i=1,…,r),r=rank(A)。
推論:設A爲m*n階實矩陣,則存在m階正交陣U和n階正交陣V,使得
A = U*S*V’
其中S=diag(σi,σ2,……,σr),σi>0(i=1,…,r),r=rank(A)。
說明:
1、 奇異值分解非常有用,對於矩陣A(m*n),存在U(m*m),V(n*n),S(m*n),滿足A =U*S*V’。U和V中分別是A的奇異向量,而S是A的奇異值。AA'的正交單位特徵向量組成U,特徵值組成S'S,A'A的正交單位特徵向量組成V,特徵值(與AA'相同)組成SS'。因此,奇異值分解和特徵值問題緊密聯繫。
2、 奇異值分解提供了一些關於A的信息,例如非零奇異值的數目(S的階數)和A的秩相同,一旦秩r確定,那麼U的前r列構成了A的列向量空間的正交基。
matlab奇異值分解
函數 svd
格式 s = svd (A) %返回矩陣A的奇異值向量
[U,S,V] = svd(A) %返回一個與A同大小的對角矩陣S,兩個酉矩陣U和V,且滿足=U*S*V'。若A爲m×n陣,則U爲m×m陣,V爲n×n陣。奇異值在S的對角線上,非負且按降序排列
[U1,S1,V1]=svd(X,0) %產生A的“經濟型”分解,只計算出矩陣U的前n列和n×n階的S。
說明:
1.“經濟型”分解節省存儲空間。
2. U*S*V'=U1*S1*V1'。
以上來自互動百科。
簡單地講,如果A是實數矩陣的話,A的奇異值就是A'A矩陣的特徵值的平方根,A'爲A的轉置矩陣。若A不是實數矩陣,A'爲A的共軛轉置矩陣。
來自wikipedia的解釋:
where U is an m×m real or complex unitary matrix, Σis an m×n diagonal matrixwith nonnegative real numbers on the diagonal, and V* (theconjugatetranspose ofV) is an n×n real or complex unitarymatrix. The diagonal entries Σi,i of Σ areknown as thesingular values ofM. The mcolumns of U and the n columns of V are calledthe left singular vectors and right singular vectorsofM, respectively.
Singular value decomposition and eigendecomposition are closely related.Namely:
-
- The left singular vectors of M are eigenvectors of MM* .
- The right singular vectors of M are eigenvectors ofM *M.
- The non-zero singular values of Σ are the square rootsof the non-zeroeigenvalues ofM *M or MM *.
在google上找了一個關於奇異值分解比較通俗的解釋,以下轉自http://www.google.com.hk/ggblog/googlechinablog/2006/12/blog-post_8935.html
在文本分類中,另一種辦法是利用矩陣運算中的奇異值分解(Singular Value Decomposition,簡稱SVD)。現在讓我們來看看奇異值分解是怎麼回事。首先,我們可以用一個大矩陣A來描述這一百萬篇文章和五十萬詞的關聯性。這個矩陣中,每一行對應一篇文章,每一列對應一個詞。
在上面的圖中,M=1,000,000,N=500,000。第 i 行,第 j 列的元素,是字典中第 j 個詞在第 i篇文章中出現的加權詞頻(比如,TF/IDF)。讀者可能已經注意到了,這個矩陣非常大,有一百萬乘以五十萬,即五千億個元素。
三個矩陣有非常清楚的物理含義。第一個矩陣X中的每一行表示意思相關的一類詞,其中的每個非零元素表示這類詞中每個詞的重要性(或者說相關性),數值越大越相關。最後一個矩陣Y中的每一列表示同一主題一類文章,其中每個元素表示這類文章中每篇文章的相關性。中間的矩陣則表示類詞和文章雷之間的相關性。因此,我們只要對關聯矩陣A進行一次奇異值分解,w我們就可以同時完成了近義詞分類和文章的分類。(同時得到每類文章和每類詞的相關性)。