下面的公式是基于物品的计算:

我之所以要把粘出来,是因为这种计算模式是公式界常用的一种方式:体会一下,单个来讲SiN*Run / |Sin|,分子分母公约之后只剩下了Run了;但是公式记录的是一种和运算,所以这就代表Run的某种运算,试想,如果两个物品完全相同,那么真的就是可以分子分母约分;那评分本来就是应该一样的;

当然没有两个物品是完全相似的。

 

U是用于行压缩(减少样本数),V是用于列压缩(降维)

 

通过压缩图像的例子,我们看出来其实本质来讲最终输出的内容是一致的(无论是压缩还是不压缩);但是关键在于压缩的过程中,正常模式要构建一个32*32的像素点阵要1024个数据;但是如果会用svd,你会发现其实只是需要两个32 * 2(U和VT)以及2个奇异值(如果算上0值是4个数据),搞掂;压缩了将近10倍。

其实SVD最迷人的地方还是在存储上,就像上面说的正常要存储1024个点,但是基于SVD,只需要存储130个点就可以了,比如只是存储U,S,VT,只有在需要的时候计算一下就可了。

 

下面介绍一下SVD的原理;讲解SVD原理之前,想要介绍几个线性代数的概念:首先是向量的长度和角度;向量的长度又称之为向量的模,是向量元素(坐标)的平方和的根。

至于向量的角度,就是在当前坐标系向,向量和坐标轴的夹角(向量的角度并没有明确的定义,可以这样来理解)。

下面再来说说正交矩阵;正交矩阵是这样的来的;作为一个向量A,在e1,e2坐标系下;然后现在还有另外一个坐标系,我们称之为e1',e2',在此坐标系下构建一个向量A',这个A'要和A重合,虽然是两个不同的坐标系,但是A和A'在e1,e2坐标系下来看和A是同一个位置;

这里就存在一个映射关系,然后,对于e1',e2'的坐标系:

(a',b').T=U*(a,b).T

这里的U就是一个正交矩阵。那么怎么来计算这个U呢?

观察一下上面的图,e1'在e1的映射中,x轴代表sinx,y周代表cosx(夹角对应边的映射是sin,非夹角对应边是cos,建立e1',和e2'的值,注意夹角寻找θ):

这样,由上面的一系列过程我们就推知了U值,因为U值就是:

为什么是这个值?因为U是(参看上面的推导):

其实这里正在讲的是线性代数和空间几何中常见的一种场景:正交旋转。将一个坐标系旋转到另外一个坐标系下,这个变换,也叫做正交变换。

正交矩阵完事了,在讲述SVD之前还要在介绍一个计算:EVD(eigenvalue decomposition),特征值分解。

我们介绍一下EVD的一个特例,EVD我们知道是Ax = λx(在PCA小节中曾经提到过,那个时候使用的v,本节使用的x),给定了向量A,右乘一个x等价于与一个标量λ右乘一个x;其中λ称之为特征值,x称之为特征向量。这里我们拿一个特例来说明,对称矩阵,加入有一个m*m的对称矩阵,特定的λ为λi,对应的特征向量为xi,则有下面的推导:

令U和Λ为:

则有:

继续推导:

到此,注意Ax等式的右边是UT*x,这说明了什么,上大段我们讲述了旋转,U是一个正交矩阵,右乘了一个x,代表着要把x进行旋转,旋转到新的坐标轴下,旋转后的结果就是[a1, a2, a3...am];于是有:

到了最后等到Ax的结果其实是对于原数据伸缩,完成这个的伸缩就是特征值 λi;然后U再左乘这个值,就实现了对于拉伸后数据的旋转。

 

 

 

参考:

向量的长度:

https://baike.baidu.com/item/%E5%90%91%E9%87%8F%E7%9A%84%E6%A8%A1/2073854?fr=aladdin

SVD原理:

https://blog.csdn.net/y1535766478/article/details/76944404

 

关于SVD的更多相关文章

  1. 奇异值分解(SVD)原理与在降维中的应用

    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域.是 ...

  2. SVD奇异值分解的基本原理和运用

    SVD奇异值分解: SVD是一种可靠的正交矩阵分解法.可以把A矩阵分解成U,∑,VT三个矩阵相乘的形式.(Svd(A)=[U*∑*VT],A不必是方阵,U,VT必定是正交阵,S是对角阵<以奇异值 ...

  3. 奇异值分解 SVD

    一基本知识 A是一个m*n的矩阵,那么A的SVD分解为\(A_{mn} = U_{mm}\Sigma _{mn}V^T_{nn}\),其中\(U^TU = I\),\(V^TV = I\),UV的列向 ...

  4. SVD的几何意义,以及在去噪,推荐系统中的应用

    很多文章说到奇异值分解的时候总是大概罗列下它的功能,并没有对功能及物理意义进行过多的阐述,现在我来对奇异值进行整理一下. 一 奇异值分解 对任意的矩阵A∈Fmn,rank(A)=r(矩阵的秩),总可以 ...

  5. Matrix Factorization SVD 矩阵分解

    Today we have learned the Matrix Factorization, and I want to record my study notes. Some kownledge ...

  6. PCA本质和SVD

    一.一些概念 线性相关:其中一个向量可以由其他向量线性表出. 线性无关:其中一个向量不可以由其他向量线性表出,或者另一种说法是找不到一个X不等于0,能够使得AX=0.如果对于一个矩阵A来说它的列是线性 ...

  7. 协同过滤和简单SVD优化

    协同过滤(collaborative filtering) 推荐系统: 百度百科的定义是:它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程主 ...

  8. 奇异值分解(SVD)和简单图像压缩

    SVD(Singular Value Decomposition,奇异值分解) 算法优缺点: 优点:简化数据,去除噪声,提高算法结果 缺点:数据的转换可能难于理解 适用数据类型:数值型数据 算法思想: ...

  9. 数值分析之奇异值分解(SVD)篇

    在很多线性代数问题中,如果我们首先思考若做SVD,情况将会怎样,那么问题可能会得到更好的理解[1].                                       --Lloyd N. ...

  10. paper 128:奇异值分解(SVD) --- 线性变换几何意义[转]

    PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD的几何意义.能在有限的篇幅把这个问题讲解的如此清晰,实属不易.原文举了一个简单的图像处理问题,简单形象,真 ...

随机推荐

  1. struts拦截器的知识

    如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了str ...

  2. 策略模式(Strategy Model)

    定义:一个类的行为或算法能在运行时被改变,将一组算法封装成一系列对象,通过这些对象灵活改变系统功能: 实现方式: 首先定义个strategy接口,然后创建一系列对象(strategy objects) ...

  3. Spring源码学习(5)—— bean的加载 part 2

    之前归纳了从spring容器的缓存中直接获取bean的情况,接下来就需要从头开始bean的加载过程了.这里着重看单例的bean的加载 if(ex1.isSingleton()) { sharedIns ...

  4. Intellij IDEA 导入Maven项目

    本人一直使用的eclipse, 但都说IDEA 是java界中最好使用的编辑器 ,所以开始了IDEA的学习,最近使用到了 IDEA 但是,既然编辑器有所差别,所以在使用过程中也难免遇到一些费劲的事情. ...

  5. 收藏nginx学习

    http://blog.csdn.net/u012186351/article/details/50605672 http://blog.csdn.net/qq_25371579/article/de ...

  6. L345 大脑复生

    Yale Researchers Build BrainEx Machine to Restore Brain Function After Death Researchers at Yale Uni ...

  7. Centos6.5 安装 RabbitMQ 3.7.11

    RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScript.XMPP.STO ...

  8. redis初始化服务器

    从启动 Redis 服务器, 到服务器可以接受外来客户端的网络连接这段时间, Redis 需要执行一系列初始化操作. 整个初始化过程可以分为以下六个步骤: 初始化服务器全局状态. 载入配置文件. 创建 ...

  9. 国内第一本cbuilder开发web的宝典震撼登场(delphi也可参考)

    uniGUI入门到精通cBuilder版 众所周知,cbuilder和delphi是曾经风靡多年的强悍的万能的开发工具,岂奈大浪淘沙,B/S时代的到来让这对孪生兄弟隐姓埋名.然,无数风流人物依然对他们 ...

  10. linux中tar及压缩解压命令用法

    把常用的tar解压命令总结下,当作备忘: tar 命令可以为Linux的文件和目录创建档案.利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向 档案中加入新的文件.t ...