关于SVD
下面的公式是基于物品的计算:
我之所以要把粘出来,是因为这种计算模式是公式界常用的一种方式:体会一下,单个来讲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的更多相关文章
- 奇异值分解(SVD)原理与在降维中的应用
奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域.是 ...
- SVD奇异值分解的基本原理和运用
SVD奇异值分解: SVD是一种可靠的正交矩阵分解法.可以把A矩阵分解成U,∑,VT三个矩阵相乘的形式.(Svd(A)=[U*∑*VT],A不必是方阵,U,VT必定是正交阵,S是对角阵<以奇异值 ...
- 奇异值分解 SVD
一基本知识 A是一个m*n的矩阵,那么A的SVD分解为\(A_{mn} = U_{mm}\Sigma _{mn}V^T_{nn}\),其中\(U^TU = I\),\(V^TV = I\),UV的列向 ...
- SVD的几何意义,以及在去噪,推荐系统中的应用
很多文章说到奇异值分解的时候总是大概罗列下它的功能,并没有对功能及物理意义进行过多的阐述,现在我来对奇异值进行整理一下. 一 奇异值分解 对任意的矩阵A∈Fmn,rank(A)=r(矩阵的秩),总可以 ...
- Matrix Factorization SVD 矩阵分解
Today we have learned the Matrix Factorization, and I want to record my study notes. Some kownledge ...
- PCA本质和SVD
一.一些概念 线性相关:其中一个向量可以由其他向量线性表出. 线性无关:其中一个向量不可以由其他向量线性表出,或者另一种说法是找不到一个X不等于0,能够使得AX=0.如果对于一个矩阵A来说它的列是线性 ...
- 协同过滤和简单SVD优化
协同过滤(collaborative filtering) 推荐系统: 百度百科的定义是:它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程主 ...
- 奇异值分解(SVD)和简单图像压缩
SVD(Singular Value Decomposition,奇异值分解) 算法优缺点: 优点:简化数据,去除噪声,提高算法结果 缺点:数据的转换可能难于理解 适用数据类型:数值型数据 算法思想: ...
- 数值分析之奇异值分解(SVD)篇
在很多线性代数问题中,如果我们首先思考若做SVD,情况将会怎样,那么问题可能会得到更好的理解[1]. --Lloyd N. ...
- paper 128:奇异值分解(SVD) --- 线性变换几何意义[转]
PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD的几何意义.能在有限的篇幅把这个问题讲解的如此清晰,实属不易.原文举了一个简单的图像处理问题,简单形象,真 ...
随机推荐
- tensorFlow入门实践(一)
首先应用TensorFlow完成一个线性回归,了解TensorFlow的数据类型和运行机制. import tensorflow as tf import numpy as np import mat ...
- selenium多窗口切换定位
from selenium import webdriverimport unittest,time,refrom selenium.webdriver.common.keys import Keys ...
- ueditor的用法
今天做了一下百度富文本编辑器,遇到了一些问题,现在来总结一下: (1)jQuery没有引用,解决方法:引用jQuery并且放在所有的js前面 (2)没有报错,但是样式显示不出来.解决方法:css引用的 ...
- 个人洛谷账号地址——https://www.luogu.org/space/show?uid=181909 附上NOIP查分系统
个人洛谷地址: https://www.luogu.org/space/show?uid=181909 NOPI查分地址: http://bytew.net/OIer/
- 安装linux虚拟机配置静态ip(NAT模式)
1.centOs7.VMware Workstation14 2.常规配置硬件和基本信息后,在图形安装界面将以太网链接打开,安装后配置ifcfg-e****,这里是我的配置文件 修改BOOTPROTO ...
- 北大poj- 1013
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 50515 Accepted: 15 ...
- 超低质量的超低起点PYQT ------前言
由于年后要赶一个小工程,以前一直用VB6+sqL2K的做些小玩具一样的桌面项目,低级的不能再低级了,某日幡然醒悟,决定努力跟进潮流的尾巴..匆匆撸了一遍网上的PYTHON基础知识,面向对象,装饰器.. ...
- SR-IOV 简介
SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性.SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Exp ...
- linux中tar及压缩解压命令用法
把常用的tar解压命令总结下,当作备忘: tar 命令可以为Linux的文件和目录创建档案.利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向 档案中加入新的文件.t ...
- 练习UML类图中的类的表示
第一部分:UML类图(class diagram) 类图用来展现一组类.类的特性以及其类相互之间的关系,一个类图由一组类以及它们之间的关系构成,类图用来对系统的领域概念以及静态结构进行建模. 在软件模 ...