奇异值分解就是在低维空间中寻找最接近原矩阵

的低维矩阵

,说白了就是数据降维。

奇异值分解是一种十分重要但又难以理解的矩阵处理技术,据人工智能的大牛吴恩达老师所说,在机器学习中是最重要的分解没有之一的存在。那么,奇异值分解到底是在干什么呢?

矩阵

表示的是高维数据,通常情况下高维数据分布并不是雨露均沾的,而往往是厚此薄彼,集中分布在某些维度上,如下图

虽然原始数据的的确确是二维数据,但是其实主要集中分布在直线

(一维空间)附近,在这里,SVD(奇异值分解)其实就是在寻找直线
,然后将数据映射到直线
上,实现数据降维的过程,即如下图

于是,通过SVD(奇异值分解),就可以利用降维后的数据近似地替代原始数据。所以,SVD(奇异值分解)其实就是在寻找数据分布的主要维度,将原始的高维数据映射到低维子空间中实现数据降维。

数学上来说,若一

矩阵
,其秩为
,通过奇异值分解可求一个低秩矩阵
(
),在弗罗贝尼乌斯范数意义下最接近原矩阵
。弗罗贝尼乌斯范数定义如下:

显然,两个矩阵各个元素越接近,弗罗贝尼乌斯范数就越接近,而矩阵的秩

表示矩阵的维度,所以通俗来讲,截断

奇异值分解就是在低维空间中寻找最接近原矩阵

的低维矩阵

奇异值分解定义为

其中,矩阵

中列向量
为左奇异向量;矩阵
为奇异值矩阵,是对角阵,
为第
个奇异值;矩阵
中列向量
为右奇异向量。于是矩阵
可以展开成

重点来了,截断奇异值分解就是通过保留(3)式中前

项,即截留前

个奇异值,在

维空间中寻找最接近原矩阵

的低维矩阵

,即

SVD(奇异值分解)一个重要的应用就是图像压缩存储,因为数字图像本身就是个矩阵,通过一个近似的低秩矩阵替代原矩阵,可以大大减少存储量,如下例子所示:

原图374×377

于是,原图可以用低秩矩阵替代:

k=10

可以看到,只需保留10个秩,图像大致轮廓基本呈现,那增加截留的秩数,则

k=50

可以看到,截留50个秩原图基本复现,那继续增大秩数,则

k=80

此时,

,跟原图已经几乎没有差别,但是存储消耗只有原图的一半。

当然,图像压缩存储并不是直接由于近似替代矩阵

是低秩的。因为矩阵
跟原矩阵
大小是相同的,直接存储
并没有节省存储。但是低秩矩阵
只需要少量
,所以实际上是通过存储少量
来替代原矩阵
来节省存储。

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(奇异值分解)到底在干什么相关推荐

  1. 本质矩阵svd分解_SVD推荐系统

    整理一下近期学习推荐系统算法的思路,定位一下SVD在整个推荐系统框架中的位置: 首先,我们知道,任何推荐系统的整体大框架都是两部分:对某个用户user而言:首先是从数百万种Item中粗略的选出千级别的 ...

  2. 汇编语言C什么意思,C和汇编的对应—main之前之后的汇编到底在干什么

    C和汇编的对应-main之前之后的汇编到底在干什么 Posted on 2010年07月21日 by sstompkins 下面以一个非常简洁的C来进行讲解ASM的实现方式 查看汇编语言实现方法,把程 ...

  3. 我们到底在干什么? —— 一名普通程序员的心声

    我们到底在干什么? -- 一名普通程序员的心声 当害怕的时候,请想想梦想-- 当你听到程序设计这个词,你首先想到的是什么?枯燥.乏味.神秘.辛苦.没错,每一个初次接触的人,都会因为不了解而恐惧甚至是抵 ...

  4. svd奇异值分解_奇异值分解SVD

    点击上方蓝字关注我们 奇异值分解(SVD)在计算机视觉中有着广泛的应用,如数据降维.推荐系统.自然语言处理等.本文是介绍SVD的数学计算过程,并从SVD的性质说明其应用的原理. 01特征值与特征向量 ...

  5. 二次型、特征值/向量、奇异值、特征值、奇异值分解、奇异值分解(SVD)原理与在降维中的应用

    一.二次型 通过矩阵来研究二次函数(方程),这就是线性代数中二次型的重点. 1 二次函数(方程)的特点 1.1 二次函数 最简单的一元二次函数就是: 给它增加一次项不会改变形状: 增加常数项就更不用说 ...

  6. python实现奇异值分解_SVD(奇异值分解)Python实现

    **注:**在<SVD(奇异值分解)小结 >中分享了SVD原理,但其中只是利用了numpy.linalg.svd函数应用了它,并没有提到如何自己编写代码实现它,在这里,我再分享一下如何自已 ...

  7. python与审计底稿关系_审计到底在干什么——做底稿

    审计?审计到底都在干嘛?为什么那么累?接下来的日子里,我来讲一讲,审计究竟在干什么. 投标--中标--签合同--做审计计划--做底稿 一般入职以后,我们的生活节奏就是预审--年审--Q1--中期--复 ...

  8. 【旅行青蛙】你的蛙到底在干什么?

    在SegmentFault里看到一位学长整理的[旅行青蛙]游戏中以程序员算法角度统计出来的一系列蛙的一切.十分佩服! 记录这一次2018年日本最热APP. 呱呱走火入魔 - 逆向游戏代码 - 终结玄学 ...

  9. 当 CPU 摸鱼时,它到底在干什么?

    人空闲时会发呆会无聊,计算机呢? 假设你正在用计算机浏览网页,当网页加载完成后你开始阅读,此时你没有移动鼠标,没有敲击键盘,也没有网络通信,那么你的计算机此时在干嘛? 有的同学可能会觉得这个问题很简单 ...

最新文章

  1. 树莓派 自动设置分辨率
  2. mysql 先排序再去重_有人说先学会三轴,再去搞四轴、五轴加工中心,这几种有何区别?...
  3. python3+Scrapy爬虫入门
  4. 2018年12月计算机一级试题答案,2018年12月计算机一级MSOffice冲刺题及答案(7)
  5. edge android apk下载地址,edge app下载-edge完整版v7.2.0 安卓版 - 极光下载站
  6. 争分夺秒!制药公司如何用大数据加快药物试验进程?
  7. 想要导航提示页_如何优化网站导航呢?
  8. 动态将ASPX生成HTML网页并将网页导出PDF
  9. 树莓派安装centos操作系统
  10. python 回归方程及回归系数的显著性检验_回归方程及回归系数的显著性检验演示教学...
  11. 宏定义的黑魔法 - 宏菜鸟起飞手册
  12. 蜂鸣器常见错误电路分析
  13. 《霍乱时期的爱情》书评
  14. 在ubuntu11.10上安装6款顶级漂亮的BURG主题
  15. Introducing Swift(Swift介绍及其API)
  16. HTML5 drag和drop的亲手实践
  17. 【第83期】10 款你不知道的 Linux 环境下的替代工具!
  18. AXURE教程:散点图
  19. Git-Git里程碑
  20. SSM+在线学习系统 毕业设计-附源码131843

热门文章

  1. 在ubuntu下设置eclipse开发STM32等嵌入式设备
  2. 傅里叶变换之看不懂就掐死我教程
  3. glutInit(argc, argv); glut初始化API
  4. Udacity机器人软件工程师课程笔记(二十五) - 使用PID控制四轴飞行器 - 四轴飞行器(四旋翼)模拟器
  5. 如何解决用谷歌浏览器调试代码接口请求的时候,跳转网页切换网页的时候,上一个页面的接口请求记录被清除消失的问题
  6. IDEA设置运行tomcat即生成war包
  7. NAT技术和代理服务器
  8. Git与github基本操作
  9. 南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题
  10. Abaqus用户子程序umat的学习