计算机系统应用教程网站

网站首页 > 技术文章 正文

透彻理解奇异值分解SVD 矩阵奇异值分解

btikc 2024-10-28 13:06:12 技术文章 11 ℃ 0 评论

一、左乘矩阵的几何意义

  • 向量左乘对角矩阵,几何上相当对这个向量的长度进行缩放,此处坐标轴保持不变;
  • 向量左乘对称矩阵,几何上相当于对这个向量的长度进行缩放,并且对坐标轴也进行旋转;
  • 给向量左乘普通矩阵,总能找到一组正交的坐标轴来表示该向量,这组坐标轴是由原来的坐标轴通过缩放和旋转而得到。

我们看一下在坐标轴上的几何变化:

1、左乘对角阵:

2、左乘对称阵:

3、左乘任意阵

对于任意的矩阵,我们总能找到一组坐标轴,来表示该向量。这个新的坐标体系是由原来的坐标轴通过缩放和旋转得到。

二、SVD的几何意义

奇异值分解SVD ( The singular value decomposition )从几何意义上来说:对于任意矩阵M,通过SVD。可以将一个相互垂直的坐标变换到另外一个相互垂直的坐标。

问题描述:

用v1v2分别表示原来坐标系中的单位向量, 经过左乘矩阵M后,向量Mv1和 Mv2 正交。用u1u2分别表示Mv1 和 Mv2方向上的单位向量,那么:

σ1* u1 = Mv1

σ2* u2 = Mv2

σ2 和 σ2分别表示这不同方向向量上的模。

设现有一个向量x,那么在变换前,其表达式为:

x = (v1·x) *v1 + (v2·x) *v2

向量点乘v1·x,表示x在v1上投影乘以v1的模,由于v1是单位向量,模为1,所以这个向量点乘,就是x在v1上投影,向量x在两个正交向量的投影乘对应的向量,然后相加就是向量x。

经过M线性变换后的向量的表达形式:

Mx = (v1·x) σ1u1 + (v2·x) σ2u2

而我们对原坐标空间表达式,等式两边同乘以矩阵M:

Mx = (v1· x) Mv1 + (v2· x) Mv2

由于v1· x是一个标量, Mv1是一个向量,所以可以变换位置如下:

Mx = u1σ1 v1Tx + u2σ2 v2Tx

进而,由于u1v1都是列向量,u1σ1 v1T就是两个向量点乘后乘以一个标量

于是可得:

M = u1σ1 v1T + u2σ2 v2T

表示成:

M = UΣVT

u 矩阵的列向量分别是u1,u2 ,Σ 是一个对角矩阵,对角元素分别是对应的σ1 和 σ2,V 矩阵的列向量分别是v1,v2

以上表明任意矩阵 M 是可以分解成三个矩阵。V 表示了原始域的标准正交基,u 表示经过 M 变换后的标准正交基,Σ 表示V 中的向量与u 中 相对应向量之间的关系。

三、与PCA的关系

将一个m * n的矩阵A的进行坐标轴的变化,P是变换矩阵,把一个m×n维的空间变换到另一个m×n维的空间,在空间中就会进行一些类似于旋转、拉伸的变化。

如果降低特征空间维度,只提取r个特征,那么就是:

这就是PCA,如果要详细了解PCA原理,请阅读本头条号另一篇非常易懂PCA的文章《深度剖析:Eigenfaces算法原理及其中PCA几何意义(人脸系列一)

跟PCA一样,SVD也是按照奇异值由大到小排列的,方差最大的坐标轴是第一个奇异向量,以此类推, SVD表达式:

在矩阵的两边同时乘上一个矩阵V,由于V是一个正交的矩阵,所以V转置乘以V得到单位阵I,所以可以化成后面的式子:

对比变换

,这里是将一个m * n 的矩阵压缩到一个m * r的矩阵,也就是对列进行压缩

同样我们写出一个通用的行压缩例子:

这样就从一个m行的矩阵压缩到一个r行的矩阵了,对SVD来说也是一样的,我们对SVD分解的式子两边乘以U的转置UT

注意上式,m×r后转置,符合矩阵相乘的左矩阵列数与右矩阵行数相等的要求。

综上,可见,PCA是SVD的一个特例,我们实现了SVD,那也就实现了PCA,或者说,我们可以得到两个方向的PCA,如果我们对ATA进行特征值的分解,只能得到一个方向的PCA。

总结如下:

  1. 左奇异矩阵可以用于行数的压缩。
  2. 右奇异矩阵可以用于列数即特征维度的压缩,也就是PCA降维。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表