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. window.onload和window.onscroll

    之前我的一个页面里写了引入了2个js,一个是包含置顶的侧面客服,一个是定位导航.2个开始都用了window.onload,发现第一个js的定位导航没有显示,被第2个js覆盖了,当我去掉第2个js的wi ...

  2. json.stringfy()和json.parse()

    json.stringfy()将对象.数组转换成字符串:json.parse()将字符串转成json对象. json.stringfy(): 语法:  JSON.stringify(value [, ...

  3. 关于javascript面向对象的详解!

    认识面向对象 1.面向对象中的概念 一切事物皆对象 对象具有封装和继承特性 信息隐藏 2.基本面向对象 3.函数构造器构造对象 深入了解面向对象 第一种书写格式 第二种书写格式

  4. C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)

    因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...

  5. H5手机端关注的问题

    手机端页面写css时应该注意的问题: 设备的屏幕尺寸   设备的分辨率   用户的操作习惯以及点击区域的大小   移动端浏览器的特性   鉴于分辨率等情况而引出的图片尺寸.布局方式等诸多细节问题   ...

  6. Android 四大组件之四(ContentProvider)

    ContentProvider调用关系: ContentProvider(数据提供者)是应用程序之间共享数据的一种接口机制,是一种更为高级的数据共享方法. ContentProvider可以指定需要共 ...

  7. 2016年12月31日 学习java 第一天

    6个月没写代码了 现在从头开是学 又遇到了很基础的问题 以前配环境变量的时候  配过classpath  其实不要配classpath  因为运行的时候会优先去classpath去找 class文件  ...

  8. Oracle笔记二

    一.数据库语言分类  二.DML之数据插入 把一个表中的数据查询出来插入另外一个表中. create table student(id number,name varchar2(20),age num ...

  9. SPSS数据分析—主成分分析

    我们在分析问题的时候,为了准确全面的反映问题,常常收集很多变量,这些变量之间往往具有相关性,导致存在大量的重复信息,直接使用的话,不但模型非常复杂,而且所引起的共线性问题会使模型准确度降低. 对此,我 ...

  10. ajax 异步插入图片到数据库(多图上传)

    额 大概就这么个样子...截个图 点浏览  选择几张图片 选择完了 确定一下 然后插入数据库 同时在页面中显示插入的图片,代码 也没啥.看下 index.php <html><hea ...