svd奇异值分解_SVD(奇异值分解)到底在干什么
奇异值分解就是在低维空间中寻找最接近原矩阵
的低维矩阵
奇异值分解是一种十分重要但又难以理解的矩阵处理技术,据人工智能的大牛吴恩达老师所说,在机器学习中是最重要的分解没有之一的存在。那么,奇异值分解到底是在干什么呢?
矩阵
虽然原始数据的的确确是二维数据,但是其实主要集中分布在直线
于是,通过SVD(奇异值分解),就可以利用降维后的数据近似地替代原始数据。所以,SVD(奇异值分解)其实就是在寻找数据分布的主要维度,将原始的高维数据映射到低维子空间中实现数据降维。
数学上来说,若一
显然,两个矩阵各个元素越接近,弗罗贝尼乌斯范数就越接近,而矩阵的秩
奇异值分解就是在低维空间中寻找最接近原矩阵
的低维矩阵
奇异值分解定义为
其中,矩阵
重点来了,截断奇异值分解就是通过保留(3)式中前
项,即截留前
个奇异值,在
维空间中寻找最接近原矩阵
的低维矩阵
SVD(奇异值分解)一个重要的应用就是图像压缩存储,因为数字图像本身就是个矩阵,通过一个近似的低秩矩阵替代原矩阵,可以大大减少存储量,如下例子所示:
于是,原图可以用低秩矩阵替代:
可以看到,只需保留10个秩,图像大致轮廓基本呈现,那增加截留的秩数,则
可以看到,截留50个秩原图基本复现,那继续增大秩数,则
此时,
当然,图像压缩存储并不是直接由于近似替代矩阵
SVD压缩存储数字图像MATLAB代码:
grayValue = imread('image.png');
grayValue = im2double(grayValue);
[m, n]= size(grayValue);
%%
% 奇异值分解
nr = 80; %保留的秩数
[u, s, v] = svd(grayValue);
grayValue2 = u(:,1:nr)*s(1:nr,1:nr)*v(:,1:nr)';
grayValue2 = grayValue2*255;
grayValue2 = uint8(grayValue2);
figure
subplot(1,2,1)
imshow(grayValue)
title('原图')
subplot(1,2,2)
imshow(grayValue2)
title(['秩r=',num2str(nr)])
imwrite(grayValue2,'image2.png')
事实上,SVD(奇异值分解)还有很多用途,比如机器学习中的主成分分析,这才是直接利用低维矩阵
svd奇异值分解_SVD(奇异值分解)到底在干什么相关推荐
- 本质矩阵svd分解_SVD推荐系统
整理一下近期学习推荐系统算法的思路,定位一下SVD在整个推荐系统框架中的位置: 首先,我们知道,任何推荐系统的整体大框架都是两部分:对某个用户user而言:首先是从数百万种Item中粗略的选出千级别的 ...
- 汇编语言C什么意思,C和汇编的对应—main之前之后的汇编到底在干什么
C和汇编的对应-main之前之后的汇编到底在干什么 Posted on 2010年07月21日 by sstompkins 下面以一个非常简洁的C来进行讲解ASM的实现方式 查看汇编语言实现方法,把程 ...
- 我们到底在干什么? —— 一名普通程序员的心声
我们到底在干什么? -- 一名普通程序员的心声 当害怕的时候,请想想梦想-- 当你听到程序设计这个词,你首先想到的是什么?枯燥.乏味.神秘.辛苦.没错,每一个初次接触的人,都会因为不了解而恐惧甚至是抵 ...
- svd奇异值分解_奇异值分解SVD
点击上方蓝字关注我们 奇异值分解(SVD)在计算机视觉中有着广泛的应用,如数据降维.推荐系统.自然语言处理等.本文是介绍SVD的数学计算过程,并从SVD的性质说明其应用的原理. 01特征值与特征向量 ...
- 二次型、特征值/向量、奇异值、特征值、奇异值分解、奇异值分解(SVD)原理与在降维中的应用
一.二次型 通过矩阵来研究二次函数(方程),这就是线性代数中二次型的重点. 1 二次函数(方程)的特点 1.1 二次函数 最简单的一元二次函数就是: 给它增加一次项不会改变形状: 增加常数项就更不用说 ...
- python实现奇异值分解_SVD(奇异值分解)Python实现
**注:**在<SVD(奇异值分解)小结 >中分享了SVD原理,但其中只是利用了numpy.linalg.svd函数应用了它,并没有提到如何自己编写代码实现它,在这里,我再分享一下如何自已 ...
- python与审计底稿关系_审计到底在干什么——做底稿
审计?审计到底都在干嘛?为什么那么累?接下来的日子里,我来讲一讲,审计究竟在干什么. 投标--中标--签合同--做审计计划--做底稿 一般入职以后,我们的生活节奏就是预审--年审--Q1--中期--复 ...
- 【旅行青蛙】你的蛙到底在干什么?
在SegmentFault里看到一位学长整理的[旅行青蛙]游戏中以程序员算法角度统计出来的一系列蛙的一切.十分佩服! 记录这一次2018年日本最热APP. 呱呱走火入魔 - 逆向游戏代码 - 终结玄学 ...
- 当 CPU 摸鱼时,它到底在干什么?
人空闲时会发呆会无聊,计算机呢? 假设你正在用计算机浏览网页,当网页加载完成后你开始阅读,此时你没有移动鼠标,没有敲击键盘,也没有网络通信,那么你的计算机此时在干嘛? 有的同学可能会觉得这个问题很简单 ...
最新文章
- 树莓派 自动设置分辨率
- mysql 先排序再去重_有人说先学会三轴,再去搞四轴、五轴加工中心,这几种有何区别?...
- python3+Scrapy爬虫入门
- 2018年12月计算机一级试题答案,2018年12月计算机一级MSOffice冲刺题及答案(7)
- edge android apk下载地址,edge app下载-edge完整版v7.2.0 安卓版 - 极光下载站
- 争分夺秒!制药公司如何用大数据加快药物试验进程?
- 想要导航提示页_如何优化网站导航呢?
- 动态将ASPX生成HTML网页并将网页导出PDF
- 树莓派安装centos操作系统
- python 回归方程及回归系数的显著性检验_回归方程及回归系数的显著性检验演示教学...
- 宏定义的黑魔法 - 宏菜鸟起飞手册
- 蜂鸣器常见错误电路分析
- 《霍乱时期的爱情》书评
- 在ubuntu11.10上安装6款顶级漂亮的BURG主题
- Introducing Swift(Swift介绍及其API)
- HTML5 drag和drop的亲手实践
- 【第83期】10 款你不知道的 Linux 环境下的替代工具!
- AXURE教程:散点图
- Git-Git里程碑
- SSM+在线学习系统 毕业设计-附源码131843
热门文章
- 在ubuntu下设置eclipse开发STM32等嵌入式设备
- 傅里叶变换之看不懂就掐死我教程
- glutInit(argc, argv); glut初始化API
- Udacity机器人软件工程师课程笔记(二十五) - 使用PID控制四轴飞行器 - 四轴飞行器(四旋翼)模拟器
- 如何解决用谷歌浏览器调试代码接口请求的时候,跳转网页切换网页的时候,上一个页面的接口请求记录被清除消失的问题
- IDEA设置运行tomcat即生成war包
- NAT技术和代理服务器
- Git与github基本操作
- 南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题
- Abaqus用户子程序umat的学习