奇异分解,咱们先从应用开始,不信你不懂
2018-03-22 20:52
447 查看
首先咱们先通过一个图书馆的故事引入正题。
图书馆引进了一批图书,现在图书馆管理员也聪明了,想着让书自己就知道自己在哪,不需要人工辨别。
那么问题来了,我们要想知道书属于哪一类,就必须知道书的内容和哪一类是相关的。
现在我们想就大致做一下,也就是让书的和库中的字进行匹配,匹配完成,根据概率规定出书属于哪一类。
现在假设有十万本书,需要匹配的字是二十万,也就是100000X200000=20000000000,我就不数了,反正很大。
![](https://img-blog.csdn.net/20180322200504594?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E2MzMzMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
这么大的数据库,要想很快地分完类进行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的特征分解为
![](https://img-blog.csdn.net/20180322202135164?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E2MzMzMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
,凑合看吧,有点漂。
一般我们会让w进行标准化,也就是归一化,它的模为1。满足
![](https://img-blog.csdn.net/20180322202547513?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E2MzMzMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
也就是说W为酉矩阵。(若一行列的复数矩阵满足:其中,A*为的共轭转置,AA*为n阶单位矩阵,则称为酉矩阵。从某60粘过来)
这里大家也能看出来,A已经设定为nxn的方阵,那么有人会说了,上面的例子也不是方阵呀??!!A必须是方阵吗?
好吧,这样问,问题的答案就来了,如你所料,我们之前学的特征分解,其实就是最简单的奇异分解,是一种很特殊的奇异分解。你完全可以用它的思想来想一下奇异分解的。
![](https://img-blog.csdn.net/20180322203148675?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E2MzMzMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-blog.csdn.net/20180322203211404?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E2MzMzMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-blog.csdn.net/20180322203243199?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E2MzMzMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
此处粘了一些公式推导,来自于一篇英文We recommend a singular value decomposition,上面有疑问的地方在于
![](https://img-blog.csdn.net/20180322203411638?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E2MzMzMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
这个大家估计看不太懂,原文就是这样写的,我自己推了一下,其实可以理解的,v1TX其实也就相当于了一个常数,而作为特征值的σ也是常数,常数移动到哪里其实都没问题。还有就是上面的内积,内积就是一个数(|v|·|x|·cosθ),至于内积等于VTX,我也是刚看到,最后自己用matlab做了下,确实如此,这是一个公式,记住就好了。还有疑问的话就是V和X是什么样的向量,蛮明确的,V和X都是列向量的。
到这里,大家对于奇异向量其实也知道得八九不离十了。
我是做图像分析的,对图像这一块是比较关注的,图像的滤波和去噪之类的,SVD也是用到了。
大的奇异值对应的特征向量包含的信息较多,转换为图像也就是所占的像素比较多。而较小的奇异值对应的特征向量包含的信息是较少的,转换为图像也就是所占的像素比较少,什么元素在图像中所占的像素比较少呢?是噪声,噪声占的比重其实是相对较少的。我们完全可以对图像矩阵进行奇异分解的,然后通过对奇异值较小的项进行删除以后,我们也就把包含其中的噪声一起删除了。当然这种方法计算量相比其他算法,计算量明显比较大,但是,这方法在某些场合也是有某些特殊用途的。
![](https://img-blog.csdn.net/20180322205106597?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2E2MzMzMjMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
图书馆引进了一批图书,现在图书馆管理员也聪明了,想着让书自己就知道自己在哪,不需要人工辨别。
那么问题来了,我们要想知道书属于哪一类,就必须知道书的内容和哪一类是相关的。
现在我们想就大致做一下,也就是让书的和库中的字进行匹配,匹配完成,根据概率规定出书属于哪一类。
现在假设有十万本书,需要匹配的字是二十万,也就是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也是用到了。
大的奇异值对应的特征向量包含的信息较多,转换为图像也就是所占的像素比较多。而较小的奇异值对应的特征向量包含的信息是较少的,转换为图像也就是所占的像素比较少,什么元素在图像中所占的像素比较少呢?是噪声,噪声占的比重其实是相对较少的。我们完全可以对图像矩阵进行奇异分解的,然后通过对奇异值较小的项进行删除以后,我们也就把包含其中的噪声一起删除了。当然这种方法计算量相比其他算法,计算量明显比较大,但是,这方法在某些场合也是有某些特殊用途的。
相关文章推荐
- 奇异值的物理意义是什么?强大的矩阵奇异值分解(SVD)及其应用
- 奇异值分解在机器视觉中的应用
- [转]矩阵奇异值分解(SVD)及其应用
- 机器学习中的数学-强大的矩阵奇异值分解(SVD)及其应用
- 使用SAP HANA Express Edition开始用自己的设备构建大数据应用
- iOS应用日志:开始编写日志组件与异常日志
- 应用开始的主界面(fragment)
- 奇异值分解SVD应用
- 奇异值、奇异矩阵、SVD分解、正交矩阵
- 奇异值分解SVD的理解与应用
- Netty聊天器(实战一):从0开始实战100w级流量应用
- Python Tkinter界面应用开发-04 开始和结束
- 是时候开始用C#快速开发移动应用了
- 强大的矩阵奇异值分解(SVD)及其应用
- 今天开始在这里写学习Python、应用Python的学习笔记
- 矩阵奇异值分解(SVD)及其应用
- (2)开始构建:一个基本的应用--ZF2官方教程译文
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
- 再谈矩阵分解在推荐系统中的应用
- 谈矩阵分解在推荐系统中的应用