SVD Decomposition 矩阵的奇异值分解

SVD分解即奇异值分解, 可以从特征值分解推导而来。先理解特征值分解

特征值和特征向量

对矩阵A,存在特征向量和特征值满足:

如果把矩阵A理解为线性变换,那么上式表示:可以找到向量使得A只能对它进行倍的拉伸。

基变换来理解。我们先构建一个“绝对”坐标系(如下图)。为了便于计算,设置原基为,正好与“绝对”坐标系重叠。

通过矩阵换基,可直接计算得到实际上是将原基变换为新基

换基不影响坐标值,所以原基下的坐标(1,1),变换后在新基下的坐标也是(1,1),而在“绝对”坐标系中坐标为(4,2)

在基变换体系下,我们无法直接获得特征向量和特征值的几何意义,以空间拉伸来解释会获得更直观理解。

空间拉伸来理解,以下线性变换将正方形围住的空间变换成普通平行四边形。大部分向量都被施加了旋转和拉伸(褐色),只有特征向量绿色蓝色)所在方向的向量只进行了拉伸,且拉伸效果为相应的特征值

再回到最上面的图,如果继续不断地对空间施加矩阵A的线性变换(), 那么特征向量所在方向的向量(绿色蓝色)会幂级拉伸,非特征向量所以在方向的向量(褐色)会越来越接近特征向量方向。特殊情况,当时,系统会稳定最大特征值对应的特征向量方向。

矩阵对角化

将矩阵对角化为特征向量为列的矩阵和对角矩阵的乘积:

其中的列向量为特征向量,为特征值矩阵。

数学推导

对角化推导如下:

根据特征值/特征向量定义:

合并为矩阵形式:

几何推导

前提知识:从新的一组基的角度来看待一个线性变换A为:

那么基于这个前提知识,我们抽取出特征向量组成一组新基, 从这组新基的角度来看待线性变换A为等式左边;等式右边一定为对角矩阵,且对角元素值为特征值。这是因为从特征向量的角度看来,A只是完成了拉伸,而没有旋转:

另外,从过程上理解,对任意一个向量施加矩阵A变换,相当于连续施加三个变换: -> -> :

特殊情况下,如果为正交矩阵,则只有旋转效果,且它们互为反向旋转;为对角矩阵,只有拉伸效果。所以改变换为:

旋转 -> 拉伸 -> 转回来

SVD奇异值分解

SVD = Singular Value Decomposition 即奇异值分解。特征值可以理解为奇异值的一种特殊情况,即矩阵为方阵的情况。在矩阵非方阵的时候,我们将类似的分解称作奇异值分解

我们有一个非方阵的维度为的矩阵,希望能够对角化。采用上面的特征矩阵分解方式是不可能了,但是我们可以利用为实对称方阵的特性来获得不同的特征矩阵分解:


可以推得(推导过程TBD):

奇异值求解推导

接下来我们来求新的对角矩阵的对角元素,即奇异值

首先了解一下的形状:

开始推导:

写成列向量的组合形式:

=>

=>

另外一种推导方式——

在最开始的奇异值分解推导中,我们已经通过来表示,现在我们通过来表示。这样我们就能知道的关系

BTW,上面用到了的条件。

由此我们得到奇异值为特征值的开根。

SVD分解的意义

A可以被U和V表示,而其中的奇异值分别为U的列向量和V的行向量的权重:

        

        

通常,前k大的奇异值就足以占了所以奇异值90%的比重,这种情况下,我们只需要选择前k个奇异值,对应地选择U的前k个列向量,还有V的前k个行向量,就可以近似表示出矩阵A:

这样一种降维思想在图像压缩,推荐系统里面有着非常广泛的应用。

参考

https://www.bilibili.com/video/av6540378/