矩陣分解、奇異值分解(SVD)

1.特徵值

  1. 特徵向量Ax=λxAx=\lambda x的幾何意義:向量x通過矩陣A變換,只進行縮放,而不改變向量方向,縮放倍數即特徵值。
  2. 對於n階方陣,一定有n個特徵值(包括複數),但非零特徵值個數等於矩陣的秩。

2.方陣的分解

根據Ax=λxAx=\lambda x, 對於n階方陣:A=UΣU1A = U\Sigma U^{-1} 其中U爲n個特徵向量構成的矩陣,Σ\Sigma爲特徵值構成的對角陣。把U的n個特徵向量標準化,滿足U1=UTU^{-1}=U^T,得到A=UΣUTA = U\Sigma ' U^{T}

3. 奇異值分解

當A不是方陣時,需要奇異值分解了(Singular Value Decompasition, SVD), 分解得到A=UΣVTA=U\Sigma V^T, 其中U,V分別爲m,n階方陣,Σ\Sigma爲m x n維矩陣,主對角線上非零元素爲奇異值。分解過程如下:

對於矩陣A=(011110)A = \left(\begin{matrix}0&1\\ 1&1\\1&0\end{matrix} \right)

  1. 求出AATAA^TATAA^TA
    AAT=(2112)AA^T = \left(\begin{matrix}2&1\\ 1&2\end{matrix} \right)AAT=(110121011)AA^T = \left(\begin{matrix}1&1&0\\ 1&2&1\\0&1&1\end{matrix} \right)
  2. 對兩者分別求特徵值與特徵向量,使得ATAvi=λiviA^TAv_i=\lambda_i v_i AATui=λiuiAA^Tu_i=\lambda_i u_i得到:λi=3,λ2=1,v1=(1/21/2)T,v2=(1/21/2)T\lambda_i=3,\lambda_2=1,v_1=(1/\sqrt2 1/\sqrt2)^T, v_2=(-1/\sqrt2 1/\sqrt2)^T u1=(1/6,2/6,1/6)T,u2=(1/2,0,1/2)Tu_1=(1/\sqrt6,2/\sqrt6,1/\sqrt6)^T, u_2=(1/\sqrt2,0,-1/\sqrt2)^T λ3=0,u3=(1/3,1/3,1/3)T\lambda_3=0, u_3=(1/\sqrt3,-1/\sqrt3,1/\sqrt3)^T
  3. 利用Avi=σiuiAv_i=\sigma_iu_i求奇異值, σ1=3,σ2=1\sigma_1=\sqrt3, \sigma_2=1.
  4. 得到分解結果:
    A=UΣVT=(1/61/21/32/601/31/61/21/3)(300100)(1/21/21/21/2)A=U\Sigma V^T= \left(\begin{matrix} 1/\sqrt6 & 1/\sqrt2 & 1/\sqrt3 \\ 2/\sqrt6 & 0 & -1/\sqrt3 \\ 1/\sqrt6 & -1/\sqrt2 & 1/\sqrt3 \end{matrix} \right)\left(\begin{matrix} \sqrt3 & 0\\ 0& 1 \\ 0 & 0 \end{matrix} \right)\left(\begin{matrix} 1/\sqrt2 & 1/\sqrt2\\ -1/\sqrt2 & 1/\sqrt2 \end{matrix} \right)

4.奇異值分解的作用:降維

Python中奇異值分解:

U,sigma,VT=linalg.svd(data)

分解後,得到sigma爲奇異值從大到小排列的向量,通過su(sigma[:k])2sum(sigma)2\frac{su(sigma[:k])^2}{sum(sigma)^2}計算奇異值的能量佔比,一般超過80%則表明保留了較多信息,可以用前k個分量還原出原矩陣的大部分信息,從而將原矩陣降維到m x k維。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章