svd(singular value decomposition) 奇异值分解  2015-05-17 16:28:50

图和部分内容来自:http://blog.csdn.net/wangzhiqing3/article/details/7446444 和 http://blog.chinaunix.net/uid-20761674-id-4040274.html 和 http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html[图(1) (2) (3) (4) (5) (6)]

奇异值分解(以下皆以svd代表)有很多前人的帖子,看过许多,但经常忘记,因此自己写一篇帖子,加深记忆。而且自己写的东西,将来翻看也更容易些。

SVD是矩阵的一种求解方法,区别于特征值分解只能分解方阵,SVD可以分解任意的矩阵。SVD可以用来求解PCA(主成分分析)和LSI等具体问题。

  • (1)特征值分解
  • (2)奇异值分解

(1)特征值分解

如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:

Av = λv

这个时候, λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是如下:

A=Q∑Q-1

其中Q是这个矩阵A的特征向量组成的矩阵,∑对角线上的每一个值是一个特征值,它是对角阵。

线性代数或者矩阵分解中,矩阵其实可以看作一个线性变换,一个矩阵乘以一个向量后,会形成新的向量,新的向量就是原向量经过线性变换后得到的。

如 (1),它对应的线性变换是如下形式:

(2)

因为M是对称矩阵,因此这个变换是对称的,即只是对目的向量在x和y这两个方向进行拉伸变换,当M非对称时,(3),它所描述的变化变为:

(4)

(2)奇异值分解,奇异值分解是一个能适用于任意矩阵的一种分解方法:

A = U∑VT

假设A是一个M*N的矩阵,那么得到的U是一个M*M的矩阵(里面的向量正交,U中向量称为左奇异向量),∑是一个N*M矩阵(对角线之外都为零,对角线上的元素称为奇异值),VT(V的转置)是一N*N的矩阵(里面向量也正交,V中向量称为右奇异向量),如下图:

(5)

那么奇异值如何与特征值对应?通过构建AT*A为方阵,求这一方阵的特征值可以得到:

(AT*A)viivi

这里得到的v,即右奇异向量,此外,还有:

σi=(λi1/2

ui=(1/σi)Avi

这里的σ为奇异值,u为左奇异向量。∑中奇异值从大到小排列,和特征值分解相同,且σ下降很快。多数情况下,前面有限个奇异值之和占了所有奇异值之和的99%,因此可以选r(r<<m&r<<n),用前r大的奇异值来近似描述矩阵。

Am*n ≈ Um*rr*rVr*n

(6)

svd自我学习的更多相关文章

  1. UFLDL教程笔记及练习答案三(Softmax回归与自我学习***)

    :softmax回归 当p(y|x,theta)满足多项式分布,通过GLM对其进行建模就能得到htheta(x)关于theta的函数,将其称为softmax回归. 教程中已经给了cost及gradie ...

  2. java知识体系(自我学习中)

    java自我学习知识体系

  3. JavaScript自我学习之解析与执行

    如果想要学好JavaScript那么我们首先必须要知道浏览器JavaScript引擎是如何解释执行JavaScript代码的,作为一名菜鸟,从自己学习JavaScript的过程来说,真心觉得不了解这些 ...

  4. PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)

    Hello!今天我们来学习一下这个神奇的图片处理的第三方函数库——PIL库 (本blog部分图片及代码来自网络) 这是一个支持图像存储.显示和处理的函数库,它能够处理几乎所有图像格式,可以完成对图像的 ...

  5. 开源项目初涉(C++自我学习开始)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://i.cnblogs.com/EditPosts.aspx?postid=8428885 临近2018农历新年,我还在上班,哈哈. ...

  6. [.NET自我学习]Delegate 泛型

    阅读导航 委托Delegate 泛型 1. 委托Delegate 继承自MulticastDelegate 声明委托定义签名: public delegate int DemoDelegate(int ...

  7. maven 自我学习笔记

    1.常用网站: maven.apache.org http://mvnrepository.com/   2.命令 mvn -v 查看maven的版本 mvn -compile 在项目的根目录下编译项 ...

  8. 关于java异常处理的自我学习

    算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...

  9. 自我学习成长系列之<<FirstHead设计模式>>

    第一章 设计模式入门 1.好词好句: 好的设计是可以应付改变. 2.驱动改变的因素:(a)客户需求不清晰,后期会一直变 (b)遇到坑爹的产品,自己不会全扔给程序员 (c)在开发过程中,产生一个新概念, ...

随机推荐

  1. OC中字符串的提取与替换-四种不同方法实现

    /* 1.将可变字符串 @"When I was young, I loved a girl in neighbor class."中,从 young提取到girl.替换 成@&q ...

  2. C++备忘录

    参考资料: 1. <C++编程思想(第一卷)> 知识点: ● register变量:它是一种局部变量类型.它告诉编译器尽快访问该变量.一般会把变量放在寄存器中,但不保证一定会.不能得到或计 ...

  3. 跨站请求伪造 CSRF / XSRF<二:应用>

    防御的方法主要有两种<java示例> 1.检查Referer字段 HTTP头中有一个Referer字段,这个字段用以标明请求来源于哪个地址.在处理敏感数据请求时,通常来说,Referer字 ...

  4. 《C++ Primer》学习笔记【第二部分 C++标准库】

    第8章 IO库 IO对象不能复制,即1.IO对象不能存储在vector或其他容器中   2.如果需要传递或返回IO对象,必须传递或返回指向该对象的指针或引用. 一般情况下,如果要传递IO对象以便对它进 ...

  5. 概率dp专场

    专题链接 第一题--poj3744 Scout YYF I  链接 (简单题) 算是递推题 如果直接推的话 会TLE 会发现 在两个长距离陷阱中间 很长一部分都是重复的 我用 a表示到达i-2步的概率 ...

  6. linux cat 命令详解

    linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...

  7. shell中$0,$?,$!等变量意义

    变量说明:   $$     #Shell本身的PID(ProcessID) $!     #Shell最后运行的后台Process的PID $?     #最后运行的命令的结束代码(返回值) $- ...

  8. Remoting&WebService的区别之处

    Remoting与Web Services的区别是:(1)既支持TCP信道又支持HTTP信道,传输速度快(2)即可传输XML的SOAP包又可传输二进制流,效率高(3)Remoteing主要用于C/S结 ...

  9. HTML5 十大新特性(十)——Web Socket

    webSocket是H5新加的一个协议,为了解决http协议的request.response一一对应和它自身的被动性,以及ajax轮询等问题.一方可以发送多条信息,连接不中断,永久连接,但也导致了服 ...

  10. Android N做了啥

    Android N做了哪些改变 一.    性能改善 Doze超级省电模式 手机在关屏同时没有充电的情况,在一段时间后会进入打盹状态,第一阶段会停掉同步.作业.网络等访问,第二阶段会停掉app的位置服 ...