奇异值分解(Singular Value Decomposition)是
线性代数中一种重要的
矩阵分解,奇异值分解则是
特征分解在任意矩阵上的推广。在
信号处理、
统计学等领域有重要应用。
基本介绍
奇异值分解在某些方面与
对称矩阵或
Hermite矩阵基于
特征向量的对角化类似。然而这两种矩阵分解尽管有其相关性,但还是有明显的不同。谱分析的基础是对称阵
特征向量的分解,而奇异值分解则是谱分析理论在任意矩阵上的推广。
理论描述
假设M是一个m×n阶矩阵,其中的元素全部属于域 K,也就是
实数域或复数域。如此则存在一个分解使得
其中U是m×m阶
酉矩阵;Σ是半正定m×n阶对角矩阵;而V*,即V的
共轭转置,是n×n阶
酉矩阵。这样的分解就称作M的奇异值分解。Σ对角线上的元素Σi,其中Σi即为M的奇异值。
常见的做法是为了奇异值由大而小排列。如此Σ便能由M唯一确定了。(虽然U和V仍然不能确定)
直观的解释
在矩阵M的奇异值分解中
奇异值和奇异向量, 以及他们与奇异值分解的关系
一个非负实数σ是M的一个
奇异值仅当存在Km 的单位向量u和Kn的
单位向量v如下 :
其中向量u 和v分别为σ的左奇异向量和右奇异向量。
对于任意的奇异值分解,矩阵Σ的对角线上的元素等于M的奇异值。U和V的列分别是奇异值中的左、右奇异向量。因此,上述定理表明:
(1)一个m × n的矩阵至多有 p = min(m,n)个不同的奇异值;
(2)总是可以找到在Km 的一个正交基U,组成M的左奇异向量;
(3)总是可以找到和Kn的一个正交基V,组成M的右奇异向量。
如果一个奇异值中可以找到两个左(或右)奇异向量是
线性相关的,则称为退化。
非
退化的奇异值具有唯一的左、右奇异向量,取决于所乘的单位相位因子eiφ(根据实际信号)。因此,如果M的所有奇异值都是非退化且非零,则它的奇异值分解是唯一的,因为U中的一列要乘以一个单位相位因子且同时V中相应的列也要乘以同一个相位因子。
根据定义,退化的奇异值具有不唯一的奇异向量。因为,如果u1和u2为奇异值σ的两个左奇异向量,则两个向量的任意规范线性组合也是奇异值σ一个左奇异向量,类似的,右奇异向量也具有相同的性质。因此,如果M 具有退化的奇异值,则它的奇异值分解是不唯一的。
几何意义
因为U 和V 向量都是单位化的向量, 我们知道U的列向量u1,...,um组成了K空间的一组
标准正交基。同样,V的列向量v1,...,vn也组成了K空间的一组标准正交基(根据向量空间的标准点积法则)。
线性变换T:即K → K,把向量Nx变换为Mx。考虑到这些
标准正交基,这个变换描述起来就很简单了:T(vi) = σi ui, for i = 1,...,min(m,n),其中σi 是
对角阵Σ中的第i个元素;当i > min(m,n)时,T(vi) = 0。
这样,SVD理论的几何意义就可以做如下的归纳:对于每一个
线性映射T: K → K,T把K的第i个基向量映射为K的第i个
基向量的非负倍数,然后将余下的基向量映射为零向量。对照这些基向量,映射T就可以表示为一个非负对角阵。
应用
求伪逆
奇异值分解可以被用来计算矩阵的伪逆。若矩阵 M 的奇异值分解为 ,那么 M 的伪逆为。
其中 是 的伪逆,并将其主对角线上每个非零元素都求倒数之后再转置得到的。求伪逆通常可以用来求解线性最小平方、
最小二乘法问题。
平行奇异值
矩阵近似值
奇异值分解在统计中的主要应用为
主成分分析(PCA),一种数据分析方法,用来找出大量数据中所隐含的“模式”,它可以用在
模式识别,
数据压缩等方面。PCA算法的作用是把数据集映射到低维空间中去。 数据集的特征值(在SVD中用奇异值表征)按照重要性排列,降维的过程就是舍弃不重要的特征向量的过程,而剩下的特征向量组成的空间即为降维后的空间。
编程
几种编程语言中计算SVD的函式范例
matlab:
[b c d]=svd(x)
OpenCV:
void cvSVD( CvArr* A, CvArr* W, CvArr* U=NULL, CvArr* V=NULL, int flags=0 )