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:
这样一种降维思想在图像压缩,推荐系统里面有着非常广泛的应用。