浅谈SVD的理解

拜读吴军老师的《数学之美》,其中第15章提到通过SVD分解可以从一堆文章中的文字集合中抽取出主题,从而将文章归类,比如从一大堆文章中抽取出体育、文学、娱乐等板块,心想真不可思议,而且SVD分解公式,A = UVW。我们知道V是一个对角矩阵,对角线上元素按主题的重要程度排序(出现次数越多越重要),简直逆天了,左思右想搞不明白

另外,经常看到一个例子,是拿SVD做图像降噪,如下图有一副图像:

浅谈SVD的理解_第1张图片

经过SVD分解后,并提取V中前三个元素后,左边的噪声图像就变成右边的那个样子,可以看到噪声像素大大减少了,天哪,SVD简直无所不能,究竟什么场景能应用SVD呢,这又是什么原理呢。

后来综合考虑PCA的数学原理,渐渐对SVD的意义有所领悟了,实际上一个m*n矩阵可以理解为m个n维向量,而这n维向量中的某些向量在某种程度上存在一些相似特征,可以归为一个聚类,而聚类之间的差别比较大(这就是主题的意义),而这些聚类之间的关系是用协方差矩阵表示的:

比如有2个m维向量a,b,其协方差:


ps:实际上应该是其减去均值后的乘积,上面是我盗的图,能说明问题,我就懒得再编辑公式了

协方差表示向量的相关性,协方差越接近0,则其相关性越低。以二维空间为例,a,b的协方差实际上是a到b的投影,这个投影越接近0,则a跟b的夹角越接近90度,即接近垂直。

将a,b写成矩阵形式为:


然后我们用X乘以X的转置,并乘上系数1/m:


可以看到副对角线上的两个元素就是a,b的协方差,而这个协方差矩阵是对称矩阵,也即存在特征值分解:

浅谈SVD的理解_第2张图片

我们知道P是D的特征向量集合,C是对角矩阵,对角元素是D的特征值。特征向量不相关,即其协方差为0,其就可以理解为一个主题,其重要程度当然可以用特征值提现,这是PCA的理论依据。

实际上SVD与PCA是一样的,其中间的对角矩阵的意义相同,SVD中间V元素实际上就是D的特征值开方,可以简单证明一下:

XTA = (UVW)T(UVW) = WTVTVW,即C = VTV,得证。


同理,对图像降噪而言,其向量最重要的三个主题即是:浅谈SVD的理解_第3张图片

这样,如果只保留其最重要的三个主题,就达到降噪的目的了



你可能感兴趣的:(机器学习)