您的位置:首页 > 其它

奇异分解,咱们先从应用开始,不信你不懂

2018-03-22 20:52 447 查看
首先咱们先通过一个图书馆的故事引入正题。
图书馆引进了一批图书,现在图书馆管理员也聪明了,想着让书自己就知道自己在哪,不需要人工辨别。
那么问题来了,我们要想知道书属于哪一类,就必须知道书的内容和哪一类是相关的。
现在我们想就大致做一下,也就是让书的和库中的字进行匹配,匹配完成,根据概率规定出书属于哪一类。
现在假设有十万本书,需要匹配的字是二十万,也就是100000X200000=20000000000,我就不数了,反正很大。



这么大的数据库,要想很快地分完类进行100000X200000=20000000000此运算,而且要是使用了矩阵运算,那么存储空间也是这些,所以是不是很不舒服??
现在我们变得聪明了,我们先把书按学科分类,文史呀,科技呀之类的。假设分了20个学科,每个学科又了100个代表字,100个代表字要和200000个字进行比较,那么我们验算量多大呢???100000*20+20*100+100*200000=22002000
20000000000/22002000=909倍,那么我们的运算速度就提高了909倍!!!是不是很惊人,而且我们储存空间也少用了909倍,那么你不需要再担心自己的内存没法跑这样的程序了。

这就是一个奇异分解能够解决的问题,在我们求奇异值的时候,其实就是在求那个20*100的矩阵的,也就是中间十万和二十万的联系环节。

提到奇异分解SVD,其实大部分同学应该都是早已经知道了特征值和特征向量的,Ax=λx,A是一个nxn的矩阵,x是一个n维的特征向量。A的特征分解为

,凑合看吧,有点漂。
一般我们会让w进行标准化,也就是归一化,它的模为1。满足


也就是说W为酉矩阵。(若一行列的复数矩阵满足:其中,A*为的共轭转置,AA*为n阶单位矩阵,则称为酉矩阵。从某60粘过来)

这里大家也能看出来,A已经设定为nxn的方阵,那么有人会说了,上面的例子也不是方阵呀??!!A必须是方阵吗?
好吧,这样问,问题的答案就来了,如你所料,我们之前学的特征分解,其实就是最简单的奇异分解,是一种很特殊的奇异分解。你完全可以用它的思想来想一下奇异分解的。







此处粘了一些公式推导,来自于一篇英文We recommend a singular value decomposition,上面有疑问的地方在于



这个大家估计看不太懂,原文就是这样写的,我自己推了一下,其实可以理解的,v1TX其实也就相当于了一个常数,而作为特征值的σ也是常数,常数移动到哪里其实都没问题。还有就是上面的内积,内积就是一个数(|v|·|x|·cosθ),至于内积等于VTX,我也是刚看到,最后自己用matlab做了下,确实如此,这是一个公式,记住就好了。还有疑问的话就是V和X是什么样的向量,蛮明确的,V和X都是列向量的。
到这里,大家对于奇异向量其实也知道得八九不离十了。
我是做图像分析的,对图像这一块是比较关注的,图像的滤波和去噪之类的,SVD也是用到了。
大的奇异值对应的特征向量包含的信息较多,转换为图像也就是所占的像素比较多。而较小的奇异值对应的特征向量包含的信息是较少的,转换为图像也就是所占的像素比较少,什么元素在图像中所占的像素比较少呢?是噪声,噪声占的比重其实是相对较少的。我们完全可以对图像矩阵进行奇异分解的,然后通过对奇异值较小的项进行删除以后,我们也就把包含其中的噪声一起删除了。当然这种方法计算量相比其他算法,计算量明显比较大,但是,这方法在某些场合也是有某些特殊用途的。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息