SVD原理

SVD为机器学习中会用到降维方法

 

SVD奇异值分解作为一个很基本的算法,在很多机器学习算法中都有它的身影。SVD奇异值分解是线性代数中一种重要的矩阵分解,是矩阵分析中正规矩阵酉对角化的推广。只需要线性代数知识就可以理解SVD算法,简单实用,分解出的矩阵解释性不强,但不影响它的使用,因此值得研究。

SVD原理

SVD在信号处理、统计学、机器学习等领域有重要应用,比如:LSA(隐性语义分析)、推荐系统、图像处理、自然语言处理和特征压缩(或称数据降维)等。SVD奇异值分解则是谱分析理论在任意矩阵上的推广。

SVD算法概念:

SVD奇异值分解(Singular Value Decomposition)是很多机器学习算法的基石。在某些方面与对称矩阵或Hermite矩阵基于特征向量的对角化类似。然而这两种矩阵分解尽管有其相关性,但还是有明显的不同。谱分析的基础是对称阵特征向量的分解,而奇异值分解则是谱分析理论在任意矩阵上的推广。SVD奇异值分解在矩阵理论的重要性不言而喻,它在最优化问题、特征值问题、最小乘方问题、广义逆矩阵、统计学、图像处理和自然语言处理等方面都有十分重要的应用。

SVD算法本质:

SVD算法本质是:将一个比较复杂的矩阵用更小更简单的3个子矩阵的相乘来表示,这3个小矩阵描述了大矩阵重要的特性。

SVD算法描述:

假设矩阵M是一个m×n阶矩阵,其中的元素全部属于域 K,也就是实数域或复数域。存在这样一个分解使得:                          

SVD原理

其中U是m×m阶酉矩阵;Σ是半正定m×n阶对角矩阵;V*是V的共轭转置,是n×n阶酉矩阵。称这样的分解叫做矩阵M的奇异值分解。Σ对角线上的元素Σi,其中Σi即为M的奇异值。

注:若矩阵V满足:VV* = V*V=En(n阶单位矩阵),则V为酉矩阵。即酉矩阵的共轭转置和它的逆矩阵相等。

常见做法是为了奇异值由大而小排列。如此Σ便能由M唯一确定了。

在矩阵M的奇异值分解中,U的列(columns)组成一套对M的正交"输入"或"分析"的基向量。这些向量是MM*的特征向量。V的列(columns)组成一套对M的正交"输出"的基向量。这些向量是M*M的特征向量。Σ对角线上的元素是奇异值,可视为是在输入与输出间进行的标量的"膨胀控制"。这些是M*M及MM*的奇异值,并与U和V的列向量相对应。

对于任意的奇异值分解,矩阵Σ的对角线上的元素等于M的奇异值。U和V的列分别是奇异值中的左、右奇异向量。

如果一个奇异值中可以找到两个左(或右)奇异向量是线性相关的,则称为退化。退化的奇异值具有不唯一的奇异向量。如果M 具有退化的奇异值,则它的奇异值分解是不唯一的。

非退化的奇异值具有唯一的左、右奇异向量。因此,如果M的所有奇异值都是非退化且非零,则它的奇异值分解是唯一的。

奇异值往往隐含着矩阵M中潜在的重要信息,重要性和奇异值大小正相关,每一个矩阵可以表示成一系列的秩为1的特殊矩阵之和,而奇异值则是衡量这些矩阵的权重

SVD几何意义:

根据公式M=UΣV* 。

因为U 和V 向量都是单位化的向量, U的列向量u1,...,um组成了K空间的一组标准正交基。同样,V的列向量v1,...,vn也组成了K空间的一组标准正交基。

几何意义是:将一个向量从V这组正交基向量的空间旋转到U这组正交基向量的空间,并且按照Σ在各个方向做了缩放,缩放的倍数就是奇异值。

SVD原理

SVD算法优点:

1)算法稳定;

2)适用面广;

3)简化数据,减小处理量;

4)去除噪声;

5)算法效果好。

SVD算法缺点:

1)计算代价很大,时间复杂度是3次方的,空间复杂度是2次方的;

2)不能共享内存;

3)很难并行计算;

4)数据转换可能难以理解。