特征值分解和奇异值分解

前言

线性代数中介绍了方阵的特征值分解,将其一般化到任意形状的矩阵对应奇异值分解。

本文暂时假设所有矩阵都为实矩阵。

特征值分解(Eigenvalue Decomposition, EVD)

线性代数中的相似对角化

对于方阵\(A_{n \times n}\),求解其特征值\(\lambda_1, ..., \lambda_n\)和对应的特征向量\(\xi_1, ..., \xi_n\)

当特征向量\(\xi_1, ..., \xi_n\)线性无关时,可以对A进行特征分解(也就是相似对角化),得到:

\[A = P \Lambda P^{-1} \]

其中,\(P\)是由特征向量按列拼接构成的方阵,\(\Lambda\)是主对角线由特征值构成的主对角矩阵,二者的顺序一一对应。

\[P = [\xi_1, ..., \xi_n] \]

\[\Lambda = diag(\lambda_1, ..., \lambda_n) \]

一般将特征值和特征向量作调整:(1)特征值从大到小排列:\(\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n\);(2)对特征向量\(\xi_1, ..., \xi_n\)进行单位化。

特殊地,当A为对称阵时,P为正交阵,即P的列向量为一组单位正交基,且有:

\[\begin{aligned} A & = P \Sigma P^{-1}\\ & = P \Sigma P^{T}\\ & = \begin{bmatrix}\xi_1, ..., \xi_n\end{bmatrix} \begin{bmatrix} \lambda_1 & &\\ & \ddots &\\ & & \lambda_n\end{bmatrix} \begin{bmatrix} \xi_1^T\\ \vdots\\ \xi_n^T \end{bmatrix}\\ & = \begin{bmatrix}\lambda_1\xi_1, ..., \lambda_n\xi_n\end{bmatrix}\begin{bmatrix} \xi_1^T\\ \vdots\\ \xi_n^T \end{bmatrix}\\ & = \lambda_1\xi_1\xi_1^T + ... + \lambda_1\xi_n\xi_n^T \end{aligned} \]

不足:特征值分解的要求A能够相似对角化,即A必须为方阵,且特征向量线性无关,现实很难满足。

特征值和特征向量的应用

图片压缩:在\(\Lambda\)中保留前k个特征值不变,其余都用零替代,得到\(A\)近似处理的\(A'\)

\[A' = P \begin{bmatrix} \lambda_1 & & \\ & \ddots & &\\ & & \lambda_k & \\ & & & \bf O \end{bmatrix} P^{-1} \]

发散思维:前k个最大的特征值可以还原出近似的原矩阵,从这点上正好对应本身名字"特征值"。

数据降维:把\(A\)看成是n个n维的样本点构成的数据集,只取前k个特征值和其对应的特征向量,得到的降维后数据\(A'\)

\[A'_{n \times k} = A_{n \times n}P_{n \times k} \]

奇异值分解(Singular Value Decomposition, SVD)

对于普通的矩阵\(A_{m \times n}\)根据奇异值分解得到:

\[A_{m \times n} = U_{m \times m} \Sigma_{m \times n} V^T_{n \times n} \]

其中\(U = [u_1, ..., u_m]\)\(V = [v_1, ..., v_n]\)都是酉矩阵[^1],即\(U^{-1} = U^{T}, UU^{-1} = UU^T = I\)\(u_i\)称为左奇异向量\(v_i\)称为右奇异向量\(\Sigma\)\(m \times n\)的对角矩阵,其主对角线上的元素称为奇异值

推导如下:

\[\begin{aligned} A & = U \Sigma V^T \\ AA^T & = U \Sigma V^T (V \Sigma^T U^T) = U \Sigma^2 U^T\\ A^TA & = (V \Sigma^T U^T)U \Sigma V^T = V \Sigma^2 V^T \end{aligned} \]

\(AA^T\)\(A^TA\)都是方阵,还是对称阵,也就应证了U和V是酉矩阵的陈述,而奇异值就是\(AA^T\)的特征值:

\[AA^T \cdot u_i = \lambda_i u_i \]

其中\(U = [u_1, ..., u_i, ..., u_m]\)\(\Sigma = diag(\lambda_1, ..., \lambda_i, ..., \lambda_{min\{m, n\}})\),式中\(AA^T\)\(u_i\)对应用\(A^TA\)\(v_i\)也成立。

同样,如果只取前r个最大的特征值,可以得到近似的\(A\):

\[A \approx U_{m \times r}\Sigma_{r \times r}V^T_{r \times n} \]

从向量空间去理解EVD和SVD

矩阵\(A\)左乘向量\(x\)就是对\(x\)进行缩放和旋转。

假设\(A\)为二阶方阵,\(A\)左乘向量\(x\)就是在\(\xi_1\)\(\xi_2\)两个方向上对\(x\)做缩放,缩放因子分为\(\lambda_1\)\(\lambda_2\),这里的的\(\lambda_1, \lambda_2\)就是\(A\)的两个特征值,而\(\xi_1, \xi_2\)则是两个特征值对应的特征向量。

如果\(x = k\xi_1\),k不为0,此时\(x\)与其中一个特征向量共线,那么A只在\(\xi_1\)上对向量进行缩放,缩放因子为\(\lambda_1\),即\(Ax = \lambda_1 x\),而矩阵A的另一个特征向量在当前特征向量上投影为0,所以不起任何作用。

如果A为对称阵,那么\(\xi_1\)\(\xi_2\)正交,那么这个时候\(\xi_1\)\(\xi_2\)就是一组单位正交基。

另外,特殊地,如果矩阵由两个单位正交基组成,它对向量就只有一个旋转的作用了(经过正交矩阵变换的向量,在向量空间中长度不变,所以正交阵对向量的作用只是变换了向量空间,但是不改变向量形状)。

再来看看SVD,其实就是把A分解成:旋转(V起作用)--> 缩放(\(\Sigma\)起作用)--> 再旋转(U起作用)。

posted @ 2020-04-29 15:20  YoungF  阅读(698)  评论(0编辑  收藏  举报