奇异值分解(Singular Value Decomposition,简称SVD)是一种强大的矩阵分解技术,在机器学习和数据科学领域广泛应用,如降维、推荐系统、自然语言处理等。SVD能够将任意形状的矩阵分解为三个特定矩阵的乘积,揭示数据的内在结构和特征。
特征值分解
特征值分解是一种只能应用于方阵的分解方法,通过求解矩阵的特征值和特征向量,将一个方阵表示为一组标准正交基的线性组合。具体来说,对于一个n阶方阵A,如果存在数λ和非零向量x,使得Ax=λx,那么λ是A的一个特征值,x是对应的特征向量。如果求出了矩阵A的所有特征值及其对应的特征向量,并且这些特征向量线性无关,那么矩阵A可以通过特征分解表示为AV=ΛV,其中Λ是由特征值组成的对角矩阵,V是特征向量组成的矩阵。特征值分解只能应用于方阵,现实世界中大部分数据矩阵不是方阵,此时需要进行奇异值分解。
SVD原理
奇异值分解可以应用于任意形状的矩阵,它的基本形式是将一个m×n的矩阵A分解为三个特殊矩阵的乘积:A=UΣVT。其中,U是一个m×m的正交矩阵,其列向量称为左奇异向量;V是一个n×n的正交矩阵,其列向量称为右奇异向量;Σ是一个m×n的对角矩阵,其对角线上的元素称为奇异值。
左奇异向量:将A和A的转置做矩阵乘法,那么会得到m×m的一个方阵AAT。
右奇异向量:将A转置做矩阵乘法和A,那么会得到n×n的一个方阵AAT
右奇异矩阵可以用于列数即特征维度的压缩,也就是我们的PCA降维,左奇异矩阵可以用于行数的压缩。
左右奇异向量的作用:左奇异向量(U)描述了矩阵行空间的基,而右奇异向量(V)描述了列空间的基
几何角度来看,SVD可以被理解为三个连续的线性变换。对于一个m×n的矩阵A,可以将m维空间中的向量通过线性变换投射到n维空间中。具体来说,首先在m维空间中选择一个标准正交基,然后通过左奇异向量组成的矩阵U将这个坐标系旋转到一个新的位置;接着,通过奇异值矩阵Σ进行各个维度的缩放;最后,通过右奇异向量组成的矩阵V将这个坐标系旋转到最终位置。这样,原始的线性变换就被分解为三个连续的变换,极大地简化了问题的处理。
在降维算法中,主成分分析(PCA)就是基于SVD的一个典型应用。通过保留最大的几个奇异值及其对应的左右奇异向量,可以近似地重构原矩阵,从而实现数据的降维和特征提取。在推荐系统中,通过对用户-物品评分矩阵进行SVD分解,可以发现潜在的用户和物品之间的关联,从而进行个性化推荐
SVD算法核心思想就是通过正交变换和对角化,将复杂矩阵简化为更易分析和处理的子矩阵,从而在保留主要信息的同时实现降维和去噪。