1.特征值
- 特征向量Ax=λxAx=\lambda xAx=λx的几何意义:向量x通过矩阵A变换,只进行缩放,而不改变向量方向,缩放倍数即特征值。
- 对于n阶方阵,一定有n个特征值(包括复数),但非零特征值个数等于矩阵的秩。
2.方阵的分解
根据Ax=λxAx=\lambda xAx=λx, 对于n阶方阵:A=UΣU−1A = U\Sigma U^{-1}A=UΣU−1 其中U为n个特征向量构成的矩阵,Σ\SigmaΣ为特征值构成的对角阵。把U的n个特征向量标准化,满足U−1=UTU^{-1}=U^TU−1=UT,得到A=UΣ′UTA = U\Sigma ' U^{T}A=UΣ′UT
3. 奇异值分解
当A不是方阵时,需要奇异值分解了(Singular Value Decompasition, SVD), 分解得到A=UΣVTA=U\Sigma V^TA=UΣVT, 其中U,V分别为m,n阶方阵,Σ\SigmaΣ为m x n维矩阵,主对角线上非零元素为奇异值。分解过程如下:
对于矩阵A=(011110)A = \left(\begin{matrix}0&1\\ 1&1\\1&0\end{matrix} \right)A=⎝⎛011110⎠⎞
- 求出AATAA^TAAT、ATAA^TAATA
AAT=(2112)AA^T = \left(\begin{matrix}2&1\\ 1&2\end{matrix} \right)AAT=(2112)、 AAT=(110121011)AA^T = \left(\begin{matrix}1&1&0\\ 1&2&1\\0&1&1\end{matrix} \right)AAT=⎝⎛110121011⎠⎞ - 对两者分别求特征值与特征向量,使得ATAvi=λiviA^TAv_i=\lambda_i v_iATAvi=λivi AATui=λiuiAA^Tu_i=\lambda_i u_iAATui=λiui得到:λ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λi=3,λ2=1,v1=(1/21/2)T,v2=(−1/21/2)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)^Tu1=(1/6,2/6,1/6)T,u2=(1/2,0,−1/2)T λ3=0,u3=(1/3,−1/3,1/3)T\lambda_3=0, u_3=(1/\sqrt3,-1/\sqrt3,1/\sqrt3)^Tλ3=0,u3=(1/3,−1/3,1/3)T
- 利用Avi=σiuiAv_i=\sigma_iu_iAvi=σiui求奇异值, σ1=3,σ2=1\sigma_1=\sqrt3, \sigma_2=1σ1=3,σ2=1.
- 得到分解结果:
A=UΣVT=(1/61/21/32/60−1/31/6−1/21/3)(300100)(1/21/2−1/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) A=UΣVT=⎝⎛1/62/61/61/20−1/21/3−1/31/3⎠⎞⎝⎛300010⎠⎞(1/2−1/21/21/2)
4.奇异值分解的作用:降维
Python中奇异值分解:
U,sigma,VT=linalg.svd(data)
分解后,得到sigma为奇异值从大到小排列的向量,通过su(sigma[:k])2sum(sigma)2\frac{su(sigma[:k])^2}{sum(sigma)^2}sum(sigma)2su(sigma[:k])2计算奇异值的能量占比,一般超过80%则表明保留了较多信息,可以用前k个分量还原出原矩阵的大部分信息,从而将原矩阵降维到m x k维。