奇异值分解( The singular value decomposition )
该部分是从几何层面上去理解二维的SVD:对于任意的 2 x 2 矩阵,通过SVD可以将一个相互垂直的网格(orthogonalgrid)变换到另外一个相互垂直的网格。
我们可以通过向量的方式来描述这个事实:首先,选择两个相互正交的单位向量
u1
这样我们就有了如下关系式
Mv1
Mv2
我们现在可以简单描述下经过
x x)
x)
这就意味着:
Mx x)
x)
Mx x)σ1u1
x)σ2u2
向量内积可以用向量的转置来表示,如下所示
vx
最终的式子为
Mx
M
上述的式子经常表示成
M
u
如何获得奇异值分解?( How do we find the singulardecomposition? )
换句话说,定义在单位圆上的函数|Mx|分别在v1和v2方向上取得最大和最小值。这样我们就把寻找矩阵的奇异值分解过程缩小到了优化函数|Mx|上了。结果发现(具体的推到过程这里就不详细介绍了)这个函数取得最优值的向量分别是矩阵MT M 的特征向量。由于MTM是对称矩阵,因此不同特征值对应的特征向量都是互相正交的,我们用vi表示MTM的所有特征向量。奇异值σi
推倒如下:
σi
Mvi
Mvj
我们先看下MviMvj,并假设它们分别对应的奇异值都不为零。一方面这个表达的值为0,推到如下
Mvi
另一方面,我们有
Mvi
因此,ui
应用实例(Another example)
现在我们来看几个实例。
实例一
经过这个矩阵变换后的效果如下图所示
在这个例子中,第二个奇异值为 0,因此经过变换后只有一个方向上有表达。
M =
换句话说,如果某些奇异值非常小的话,其相对应的几项就可以不同出现在矩阵
实例二
我们来看一个奇异值分解在数据表达上的应用。假设我们有如下的一张 15 x 25 的图像数据。
如图所示,该图像主要由下面三部分构成。
我们将图像表示成 15 x 25 的矩阵,矩阵的元素对应着图像的不同像素,如果像素是白色的话,就取 1,黑色的就取 0.我们得到了一个具有375个元素的矩阵,如下图所示
如果我们对矩阵M进行奇异值分解以后,得到奇异值分别是
σ1
σ2
σ3
矩阵M就可以表示成
M=u1σ1
vi具有15个元素,ui
实例三
减噪(noise reduction)
前面的例子的奇异值都不为零,或者都还算比较大,下面我们来探索一下拥有零或者非常小的奇异值的情况。通常来讲,大的奇异值对应的部分会包含更多的信息。比如,我们有一张扫描的,带有噪声的图像,如下图所示
我们采用跟实例二相同的处理方式处理该扫描图像。得到图像矩阵的奇异值:
σ1
σ2
σ3
σ4
σ5
...
σ15
很明显,前面三个奇异值远远比后面的奇异值要大,这样矩阵
M
经过奇异值分解后,我们得到了一张降噪后的图像。
实例四
数据分析(data analysis)
我们搜集的数据中总是存在噪声:无论采用的设备多精密,方法有多好,总是会存在一些误差的。如果你们还记得上文提到的,大的奇异值对应了矩阵中的主要信息的话,运用SVD进行数据分析,提取其中的主要部分的话,还是相当合理的。
作为例子,假如我们搜集的数据如下所示:
我们将数据用矩阵的形式表示:
经过奇异值分解后,得到
σ1
σ2
由于第一个奇异值远比第二个要大,数据中有包含一些噪声,第二个奇异值在原始矩阵分解相对应的部分可以忽略。经过SVD分解后,保留了主要样本点如图所示
就保留主要样本数据来看,该过程跟PCA( principal componentanalysis)技术有一些联系,PCA也使用了SVD去检测数据间依赖和冗余信息.
总结(Summary)