特征值分解和奇异值分解
前言
线性代数中介绍了方阵的特征值分解,将其一般化到任意形状的矩阵对应奇异值分解。
本文暂时假设所有矩阵都为实矩阵。
特征值分解(Eigenvalue Decomposition, EVD)
线性代数中的相似对角化
对于方阵\(A_{n \times n}\),求解其特征值\(\lambda_1, ..., \lambda_n\)和对应的特征向量\(\xi_1, ..., \xi_n\),
当特征向量\(\xi_1, ..., \xi_n\)线性无关时,可以对A进行特征分解(也就是相似对角化),得到:
其中,\(P\)是由特征向量按列拼接构成的方阵,\(\Lambda\)是主对角线由特征值构成的主对角矩阵,二者的顺序一一对应。
一般将特征值和特征向量作调整:(1)特征值从大到小排列:\(\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n\);(2)对特征向量\(\xi_1, ..., \xi_n\)进行单位化。
特殊地,当A为对称阵时,P为正交阵,即P的列向量为一组单位正交基,且有:
不足:特征值分解的要求A能够相似对角化,即A必须为方阵,且特征向量线性无关,现实很难满足。
特征值和特征向量的应用
图片压缩:在\(\Lambda\)中保留前k个特征值不变,其余都用零替代,得到\(A\)近似处理的\(A'\)
发散思维:前k个最大的特征值可以还原出近似的原矩阵,从这点上正好对应本身名字"特征值"。
数据降维:把\(A\)看成是n个n维的样本点构成的数据集,只取前k个特征值和其对应的特征向量,得到的降维后数据\(A'\):
奇异值分解(Singular Value Decomposition, SVD)
对于普通的矩阵\(A_{m \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\)的对角矩阵,其主对角线上的元素称为奇异值。
推导如下:
\(AA^T\)和\(A^TA\)都是方阵,还是对称阵,也就应证了U和V是酉矩阵的陈述,而奇异值就是\(AA^T\)的特征值:
其中\(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\):
从向量空间去理解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起作用)。