1.特征值分解 (EVD):(A=QLambda Q^{-1})
(若A是方阵,则A=QLambda Q^{-1};若A是实对称方阵,则A=QLambda 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=ULambda V^{T})
(任意矩阵A,则有分解:A=ULambda V^{T})
2.1 奇异值定义
对任意矩阵A,其(AA^T)是个方阵,同理进行特征值分解,则有
定义:
则,这里的(sigma_i)就是奇异值,可见与特征值类似;其中的(v_i)为右奇异向量,(u_i)为左奇异向量;
同时,对(m imes n的实数矩阵A)有如下的分解定义:
(其中U和V均为单位正交阵,即有UU^T=E和VV^T=E,U称为左奇异矩阵,V称为右奇异矩阵,Σ仅在主对角线上有值,\称为奇异值,其它元素均为0。上面矩阵的维度分别为Uin R^{m×m}, Σin R^{m×n}, Vin R^{n×n},其中的\Sigma有如下的形式)
2.2 求解奇异值
若用上述的定义求解奇异值则会非常的不便,可利用下式
其中(AA^T)是实对称矩阵呀,可以进行特征值分解,这样就可以计算出左奇异矩阵(U)和(SigmaSigma^T)了。可以看到,其中的(Sigma)是以奇异值为对角元素的对角阵,而(SigmaSigma^T)则是以奇异值的平方为元素的对角阵。同理可以利用下式
计算出右奇异矩阵(V)和(Sigma^TSigma)。
注意,计算得到的(SigmaSigma^Tin R^{m×m})和(Sigma^TSigmain R^{n×n})的矩阵大小是不一样的哟!!但是他们的主对角线的奇异值是相等的
但两个矩阵的大小是不一样的呀,那么多出来的几个奇异值的大小是怎么样的呢?其实多出来的几个奇异值是很小的,约等于零,可以自己用如下程序算算。
A=rand(4,6)*100;
[a,b]=eig(A*A');%b是特征矩阵
[c,d]=eig(A'*A);%d是特征矩阵