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

我之所以要把粘出来,是因为这种计算模式是公式界常用的一种方式:体会一下,单个来讲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. 【SoftwareTesting】Homework2

    For the Program1, For Question1: The fault is that in the loop condition, ' i ' should be not less t ...

  2. lvs用户空间命令ipvsadm

    ipvs工作在内核空间,而ipvsadm工作在用户空间,是负责管理集群服务编写规则的命令行工具 ipvsadm需要手动安装. $ yum -y install ipvsadm ipvsadm管理命令 ...

  3. 淘宝的推荐系统 计算之道2A

    小明刚刚入职淘宝,老大给他交代了一个简单的任务,实现一个简易的商品推荐系统. 这个商品推荐系统的需求如下: 一共有 n 件商品可以被推荐,他们的编号分别为 1 到 n.每件商品都有一个价格,编号为 i ...

  4. QT 定时器详解

    编译器 :   Qt Creator 在窗口化类中实现定时器 .h #include <QTimer> private slots: ... void onTimerOut(); priv ...

  5. java第11周

    1.JPQL查询 JPQL全称Java Persistence Query Language 基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移 ...

  6. Python_随机序列生成_白噪声

    本文介绍如何利用Python自行生成随机序列,实现了 Whichmann / Hill 生成器. 参考: [1]Random Number Generation and Monte Carlo Met ...

  7. Python之必备函数

    1. lambda 表达式 匿名函数(ANONYMOUS FUNCTION)是指一类无需定义标识符(函数名)的函数.通俗来讲,就是它可以让我们的函数,可以不需要函数名. 正常情况下,我们定义一个函数, ...

  8. 2186 Popular Cows

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 41771   Accepted: 16955 De ...

  9. 2018-计算机系机试(第二批)-B-二进制输出

    B. 二进制输出 单点时限: 1.0 sec 内存限制: 256 MB 输入一个十进制表示的非负整数,输出其 8 位二进制表示. 例如:输入 10 ,输出 00001010. 输入格式 一行一个非负整 ...

  10. 利用axure软件实现app中的轮播图功能

    1.首先在axure软件中插入一张手机模型图片并调整为合适大小 2.在需要展示轮播图片位置拖入[动态面板]并且调整大小 拖入后双击动态面板,填入面板名称,并且添加面板状态(此处轮播图为三张,所以有三个 ...