线代随笔17-奇异值分解(SVD)推导
奇异值分解可以说是基础线性代数的高潮部分,它将很多基础线性代数的内容串联起来,比如正交矩阵,基,正定,矩阵的秩,特征值,特征向量,矩阵的逆等等。奇异值分解的理论非常漂亮,它可以对任意形状的矩阵进行分解,而且得到分解形式也很特殊。本博文以一种倒叙的方式介绍奇异值分解,从中可以领会到数学美感。
假设矩阵A为任意维度,A的秩为,如果不为方正,那么自然是得不到特征值和特征向量的。但是与却是对称的,而且根据正定性,它们是半正定矩阵。所以,可以计算相关的特征值和特征向量。那么,这两个矩阵的特征向量是否有什么关系呢?
大胆假设
我们来做一些大胆的设想,假设下面条件统统成立:
- ,
读者可能不禁要想,对于任意矩阵A,这种假设是不是太过苛刻!先不管那么多,假设成立,可以得到
由于均是正交的,所以可以使用Gram-Schimidt方法将其扩展到整个行空间和列空间,得到下面
简化上面的表达式
也就是说,如果矩阵A满足上面这些条件,就可以将A分解成两个正交矩阵和一个对角矩阵,是不是非常优美!由于后面对角线元素都为0,所以可以进一步简化:
是U保留前r列,是保留前r行,是保留前r行与r列。
小心求证
首先从开始,由于半正定性,所以可以将其特征值写成如下形式
由半正定性,可得标准正交,且令)称之为奇异值(注意:不要与特征值混淆)。对公式(1)两边乘以得到
从公式(2)可以了解到,奇异值是单位特征向量在矩阵A列空间的投影向量的模长(很绕口,看看就好,不用太在意)。然后,继续对公式(1)两边乘以A,构造出
线性代数中有很多重要证明利用了括号变化,上面又是一个重要的例子。根据公式(3),可以发现与具有相同的特征值。并且特征向量具有关系,令是的特征向量,明显有正交,且由公式(3),。但是正交特征矩阵一般需要为单位矩阵,而且由公式(1)可以容易得到模长,所以最终令。上面的假设得到了证明。
事实证明上面的假设并不苛刻,对于任意A都可以找到这些向量和奇异值将其分解,不得不佩服发现SVD的数学家们。
计算策略
由于与的特征值相同,计算策略显而易见,计算维度较小的那个矩阵的特征值。因为特征值的复杂度是,n是矩阵的行数,当行数很高时,根本无法计算。spark中的SVD也是按这种策略实现。
奇异值的权重
奇异值都是大于0的实数,可以认为是权重,所以将奇异值按照从大到小的方式延对角线排列,可以得到唯一的分解。将SVD分解按代数形式展开,如下
A是r个秩为1的矩阵的线性组合,且每个矩阵室由单位向量乘法构成模,奇异值是系数。如果最后的奇异值比较小,可以忽略,对A的整体影响比较小,这样可以做有损压缩。
您的打赏是对我最大的鼓励!