前言
线性代数中介绍了方阵的特征值分解,将其一般化到任意形状的矩阵对应奇异值分解。
本文暂时假设所有矩阵都为实矩阵。
特征值分解(Eigenvalue Decomposition, EVD)
线性代数中的相似对角化
对于方阵(A_{n imes 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 imes 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 imes 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 = kxi_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起作用)。