转载于http://blog.csdn.net/zhongkejingwang/article/details/43053513

在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补充的,特别是关于矩阵和映射之间的对应关系。前段时间看了国外的一篇文章,叫A Singularly Valuable Decomposition The SVD of a Matrix,觉得分析的特别好,把矩阵和空间关系对应了起来。本文就参考了该文并结合矩阵的相关知识把SVD原理梳理一下。

SVD不仅是一个数学问题,在工程应用中的很多地方都有它的身影,比如前面讲的PCA,掌握了SVD原理后再去看PCA那是相当简单的,在推荐系统方面,SVD更是名声大噪,将它应用于推荐系统的是Netflix大奖的获得者Koren,可以在Google上找到他写的文章;用SVD可以很容易得到任意矩阵的满秩分解,用满秩分解可以对数据做压缩。可以用SVD来证明对任意M*N的矩阵均存在如下分解:

这个可以应用在数据降维压缩上!在数据相关性特别大的情况下存储X和Y矩阵比存储A矩阵占用空间更小!

在开始讲解SVD之前,先补充一点矩阵代数的相关知识。

正交矩阵

正交矩阵是在欧几里得空间里的叫法,在酉空间里叫酉矩阵,一个正交矩阵对应的变换叫正交变换,这个变换的特点是不改变向量的尺寸和向量间的夹角,那么它到底是个什么样的变换呢?看下面这张图

假设二维空间中的一个向量OA,它在标准坐标系也即e1、e2表示的坐标是中表示为(a,b)'(用'表示转置),现在把它用另一组坐标e1'、e2'表示为(a',b')',存在矩阵U使得(a',b')'=U(a,b)',则U即为正交矩阵。从图中可以看到,正交变换只是将变换向量用另一组正交基表示,在这个过程中并没有对向量做拉伸,也不改变向量的空间位置,加入对两个向量同时做正交变换,那么变换前后这两个向量的夹角显然不会改变。上面的例子只是正交变换的一个方面,即旋转变换,可以把e1'、e2'坐标系看做是e1、e2坐标系经过旋转某个斯塔角度得到,怎么样得到该旋转矩阵U呢?如下

a'和b'实际上是x在e1'和e2'轴上的投影大小,所以直接做内积可得,then

从图中可以看到

所以

正交阵U行(列)向量之间都是单位正交向量。上面求得的是一个旋转矩阵,它对向量做旋转变换!也许你会有疑问:刚才不是说向量空间位置不变吗?怎么现在又说它被旋转了?对的,这两个并没有冲突,说空间位置不变是绝对的,但是坐标是相对的,加入你站在e1上看OA,随着e1旋转到e1',看OA的位置就会改变。如下图:

如图,如果我选择了e1'、e2'作为新的标准坐标系,那么在新坐标系中OA(原标准坐标系的表示)就变成了OA',这样看来就好像坐标系不动,把OA往顺时针方向旋转了“斯塔”角度,这个操作实现起来很简单:将变换后的向量坐标仍然表示在当前坐标系中。

旋转变换是正交变换的一个方面,这个挺有用的,比如在开发中需要实现某种旋转效果,直接可以用旋转变换实现。正交变换的另一个方面是反射变换,也即e1'的方向与图中方向相反,这个不再讨论。

总结:正交矩阵的行(列)向量都是两两正交的单位向量,正交矩阵对应的变换为正交变换,它有两种表现:旋转和反射。正交矩阵将标准正交基映射为标准正交基(即图中从e1、e2到e1'、e2')

特征值分解——EVD

在讨论SVD之前先讨论矩阵的特征值分解(EVD),在这里,选择一种特殊的矩阵——对称阵(酉空间中叫hermite矩阵即厄米阵)。对称阵有一个很优美的性质:它总能相似对角化,对称阵不同特征值对应的特征向量两两正交。一个矩阵能相似对角化即说明其特征子空间即为其列空间,若不能对角化则其特征子空间为列空间的子空间。现在假设存在mxm的满秩对称矩阵A,它有m个不同的特征值,设特征值为

对应的单位特征向量为

则有

进而

所以可得到A的特征值分解(由于对称阵特征向量两两正交,所以U为正交阵,正交阵的逆矩阵等于其转置)

这里假设A有m个不同的特征值,实际上,只要A是对称阵其均有如上分解。

矩阵A分解了,相应的,其对应的映射也分解为三个映射。现在假设有x向量,用A将其变换到A的列空间中,那么首先由U'先对x做变换:

U是正交阵U'也是正交阵,所以U'对x的变换是正交变换,它将x用新的坐标系来表示,这个坐标系就是A的所有正交的特征向量构成的坐标系。比如将x用A的所有特征向量表示为:

则通过第一个变换就可以把x表示为[a1 a2 ... am]':

紧接着,在新的坐标系表示下,由中间那个对角矩阵对新的向量坐标换,其结果就是将向量往各个轴方向拉伸或压缩:

从上图可以看到,如果A不是满秩的话,那么就是说对角阵的对角线上元素存在0,这时候就会导致维度退化,这样就会使映射后的向量落入m维空间的子空间中。

最后一个变换就是U对拉伸或压缩后的向量做变换,由于U和U'是互为逆矩阵,所以U变换是U'变换的逆变换。

因此,从对称阵的分解对应的映射分解来分析一个矩阵的变换特点是非常直观的。假设对称阵特征值全为1那么显然它就是单位阵,如果对称阵的特征值有个别是0其他全是1,那么它就是一个正交投影矩阵,它将m维向量投影到它的列空间中。

根据对称阵A的特征向量,如果A是2*2的,那么就可以在二维平面中找到这样一个矩形,是的这个矩形经过A变换后还是矩形:

这个矩形的选择就是让其边都落在A的特征向量方向上,如果选择其他矩形的话变换后的图形就不是矩形了!

奇异值分解——SVD

上面的特征值分解的A矩阵是对称阵,根据EVD可以找到一个(超)矩形使得变换后还是(超)矩形,也即A可以将一组正交基映射到另一组正交基!那么现在来分析:对任意M*N的矩阵,能否找到一组正交基使得经过它变换后还是正交基?答案是肯定的,它就是SVD分解的精髓所在。

现在假设存在M*N矩阵A,事实上,A矩阵将n维空间中的向量映射到k(k<=m)维空间中,k=Rank(A)。现在的目标就是:在n维空间中找一组正交基,使得经过A变换后还是正交的。假设已经找到这样一组正交基:

则A矩阵将这组基映射为:

如果要使他们两两正交,即

根据假设,存在

所以如果正交基v选择为A'A的特征向量的话,由于A'A是对称阵,v之间两两正交,那么

这样就找到了正交基使其映射后还是正交基了,现在,将映射后的正交基单位化:

因为

所以有

所以取单位向量

由此可得

当k < i <= m时,对u1,u2,...,uk进行扩展u(k+1),...,um,使得u1,u2,...,um为m维空间中的一组正交基,即

同样的,对v1,v2,...,vk进行扩展v(k+1),...,vn(这n-k个向量存在于A的零空间中,即Ax=0的解空间的基),使得v1,v2,...,vn为n维空间中的一组正交基,即

则可得到

继而可以得到A矩阵的奇异值分解:

现在可以来对A矩阵的映射过程进行分析了:如果在n维空间中找到一个(超)矩形,其边都落在A'A的特征向量的方向上,那么经过A变换后的形状仍然为(超)矩形!

vi为A'A的特征向量,称为A的右奇异向量,ui=Avi实际上为AA'的特征向量,称为A的左奇异向量。下面利用SVD证明文章一开始的满秩分解:

利用矩阵分块乘法展开得:

可以看到第二项为0,有

则A=XY即是A的满秩分解。

整个SVD的推导过程就是这样,后面会介绍SVD在推荐系统中的具体应用,也就是复现Koren论文中的算法以及其推导过程。

矩阵奇异值分解(详解)相关推荐

  1. c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解

    C语言 经典题目螺旋矩阵 实例详解 C语言 经典题目螺旋矩阵 //N阶螺旋矩阵 #include #include int main() { int N,i,j,n,num=1; int a[10][ ...

  2. Web 三维矩阵matrix3d详解

    文章目录 前言 一.3D平面的矩阵由来? 二.平移 公式推导 推导矩阵 三.缩放 推导矩阵 四.旋转 单位圆 公式推导 推导矩阵 绕Z轴旋转 绕X轴旋转 绕Y轴旋转 结论 五.CSS3中matrix3 ...

  3. 腾讯郭振宇:腾讯云发布云IoT全栈产品矩阵,详解6大产品及3大案例

    5月21-23日,由云南省人民政府指导,云南省文化和旅游厅.昆明市人民政府.腾讯公司共同主办,腾讯战略升级后打造的规格最高.规模最大的行业生态大会"全球数字生态大会"在昆明隆重举行 ...

  4. R语言 -- car::scatterplotmatrix散点图矩阵 参数详解

    最近为了帮忙媳妇绘制医学SCI文章,学习了下R语言. 在R语言实战第二版书,第八章回归分析时,用到了scatterplotmatrix 函数绘制散点图矩阵,发现已经不是当前最新的car包了,函数参数都 ...

  5. 51单片机矩阵按键详解,两位数码管显示(普中HC6800ESV2.0)

    一.简述 本人是一名在校生,这个学期刚好在学单片机,自己也挺有兴趣,前面在写数码管.时钟啥的程序时都没什么大问题,但是做到矩阵按键时碰到了一些问题,不过已经解决,下面我会把碰到的问题和解决方法都写出来 ...

  6. Web二维矩阵matrix详解

    文章目录 前言 一.2D平面的矩阵由来? 二.平移 公式推导 推导矩阵 三.缩放 公式推导 推导矩阵 四.旋转 单位圆 公式推导 推导矩阵 五.斜切 斜切的概念 公式推导 六.CSS3中matrix( ...

  7. 【代码分析】cublasSgemm 矩阵乘法详解

    目录 前言 预备知识 cublasSgemm 函数 求解C=AxB 不使用cublasSgemm transa与transb参数 示例程序 使用cublasSgemm transa与transb参数 ...

  8. 转换矩阵 Matrix详解

    做UI少不了图形处理,转换矩阵是图形学里的基础,flash中更是常用, Matrix 类表示一个转换矩阵,它确定如何将点从一个坐标空间映射到另一个坐标空间. 先来看一个二维矩阵的几何意义: 2     ...

  9. c语言实现蛇形矩阵(详解含代码)

    大家好,我是诚挚的乔治  前言: 本次蛇形矩阵我将以两种方法来实现,即非递归和递归 非递归的实现: #define right 1 #define down 2 #define left 3 #def ...

  10. 人工智能里的数学修炼 | 矩阵的花样分解:特征值分解(EVD)、相似对角化、QR分解、Schur分解、奇异值分解(SVD)的概念纠缠与详解

    前言 在高等代数里,矩阵分解是一个十分基础与重要的内容,任何一个学校对于理工科的研究生教育都会开设相应的课程,如:矩阵分析.矩阵论.线性系统等.看了不少社区的问答.笔记和博客,在它们的基础上加入一些自 ...

最新文章

  1. 《强化学习周刊》第34期:牛津、谷歌、Facebook等 | 自动强化学习 (AutoRL):研究综述和开放性问题...
  2. 聊聊flink的InternalTimeServiceManager
  3. 招不招新人?IT经理很纠结.
  4. 【转】Win7、Ubuntu双系统正确卸载Ubuntu系统--不错
  5. Lin总线应用层代码
  6. 关于JSP(Java Server Pages)的内置对象有哪些?
  7. Ubuntu20.04 命令行 修改IP地址
  8. mysql 图片转为二进制_php 图片转为二进制数据的方法
  9. 小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_17、SpringBootTest单元测试实战...
  10. Http协议详解(深入理解)
  11. 微型计算机中的存储容量1TB等于,自考计算机应用基础_通关宝典
  12. PLC通讯实现-C#实现三菱PLC通讯(三)
  13. 这个超级好哎 vector 容器的 怕失效
  14. 阿里用技术帮用户剁手——《尽在双11——阿里巴巴技术演进与超越》
  15. 语音识别论文:Comparing the Benefit of Synthetic Training Data for Various Automatic Speech Recognition Arc
  16. linux 什么是tty console和tty和串口的关系 如何在linux下查看tty对应哪个串口
  17. 洁净室环境在线式监测实时读取颗粒尘埃粒子计数器
  18. Transform 转换
  19. md5sum命令的使用
  20. 基于STM32的ADS8688驱动

热门文章

  1. [VOT7](2022CVPR) GTELT:Global Tracking via Ensemble of Local Trackers
  2. 9700usb网卡 linux驱动,qf9700 USB网卡在x86 linux和arm linux上的驱动安装以及配置
  3. python拆分word文档_python-docx处理word文档
  4. Table is marked as crashed and should be repaire
  5. ir2104s的自举电容_有关IR2104的自举电容和NMOS选择问题 - 图文 -
  6. 悲剧四个月python培训班,需要踩完坑犯过错,这些免费的编程资源,值得一生推
  7. 无忧代理免费ip爬取(端口js加密)
  8. c语言中输出以e为底的指数,c语言中以e为底的指数怎么表示 c++中怎样表示以e为底的...
  9. FPGA初学者__个人学习笔记(二)_ generate 用法
  10. 苏州企业如何免费办理软件著作权