【数学】特征值分解、奇异值分解
1.特征值分解 (EVD):\(A=Q\Lambda Q^{-1}\)
\(若A是方阵,则A=Q\Lambda Q^{-1};若A是实对称方阵,则A=Q\Lambda Q^{T}\)
前提:A是方阵。就有如上的分解,其中Q是由矩阵A的特征向量构成,\(\Lambda\)是一个对角阵,由矩阵A的特征值构成,并且P中的特征向量与\(\Lambda\)中的特征值的位置是对应的。
1.1 特征值
若向量x是方阵A的特征向量,则有:
其中的\(\lambda\)就是特征向量对应的特征值。
1.2 特征分解推导
设列向量\(x_i\)为矩阵A的特征向量,并设矩阵A共有n个线性无关的特征向量,记为\(Q=[x_1,x_2,\cdots,x_n]\),则
则,其中的\(\Lambda\)为对角矩阵,\(\Lambda=diag(\lambda_1,\lambda_2,\cdots,\lambda_n),\lambda_i\)为特征值。由于Q中的特征向量是线性无关的,所以有矩阵Q的逆矩阵。则有
特殊的,若矩阵A是实对称矩阵,那么它的特征向量是线性无关的,并且是相互正交的,也即矩阵Q是个正交矩阵,因为对于正交矩阵,有\(QQ^T=E\),所以有:
A=rand(5,5)*100;
%随便的方阵A的特征值和特征向量有可能是复数;实对称(如协方差)矩阵的特征值和特征向量是实数,且特征向量相互正交
[eigenvector,eigenvalue]=eig(A);%eigenvector的列向量和eigenvalue对角元分别为A的特征向量和特征值
[eigenvector,eigenvalue]=eig(cov(A));%cov(A)是实对称
2.奇异值分解(SVD):\(A=U\Lambda V^{T}\)
\(任意矩阵A,则有分解:A=U\Lambda V^{T}\)
2.1 奇异值定义
对任意矩阵A,其\(AA^T\)是个方阵,同理进行特征值分解,则有
定义:
则,这里的\(\sigma_i\)就是奇异值,可见与特征值类似;其中的\(v_i\)为右奇异向量,\(u_i\)为左奇异向量;
同时,对\(m\times n的实数矩阵A\)有如下的分解定义:
\(其中U和V均为单位正交阵,即有UU^T=E和VV^T=E,U称为左奇异矩阵,V称为右奇异矩阵,Σ仅在主对角线上有值,\\称为奇异值,其它元素均为0。上面矩阵的维度分别为U\in R^{m×m}, Σ\in R^{m×n}, V\in R^{n×n},其中的\\\Sigma有如下的形式\)
2.2 求解奇异值
若用上述的定义求解奇异值则会非常的不便,可利用下式
其中\(AA^T\)是实对称矩阵呀,可以进行特征值分解,这样就可以计算出左奇异矩阵\(U\)和\(\Sigma\Sigma^T\)了。可以看到,其中的\(\Sigma\)是以奇异值为对角元素的对角阵,而\(\Sigma\Sigma^T\)则是以奇异值的平方为元素的对角阵。同理可以利用下式
计算出右奇异矩阵\(V\)和\(\Sigma^T\Sigma\)。
注意,计算得到的\(\Sigma\Sigma^T\in R^{m×m}\)和\(\Sigma^T\Sigma\in R^{n×n}\)的矩阵大小是不一样的哟!!但是他们的主对角线的奇异值是相等的
但两个矩阵的大小是不一样的呀,那么多出来的几个奇异值的大小是怎么样的呢?其实多出来的几个奇异值是很小的,约等于零,可以自己用如下程序算算。
A=rand(4,6)*100;
[a,b]=eig(A*A');%b是特征矩阵
[c,d]=eig(A'*A);%d是特征矩阵