很多文章说到奇异值分解的时候总是大概罗列下它的功能,并没有对功能及物理意义进行过多的阐述,现在我来对奇异值进行整理一下。

一 奇异值分解

对任意的矩阵A∈Fmn,rank(A)=r(矩阵的秩),总可以取A的如下分解:,其中U和V是正交矩阵。分别为左右奇异值向量。

U是m×m阶酉矩阵;Σ是m×n阶非负实数对角矩阵;而V*,即V的共轭转置,是n×n阶酉矩阵。这样的分解就称作M的奇异值分解。Σ对角线上的元素Σii即为M的奇异值。

V的列(columns)组成一套对M的正交"输入"或"分析"的基向量。这些向量是M*M的特征向量。

U的列(columns)组成一套对M的正交"输出"的基向量。这些向量是MM*的特征向量。

Σ对角线上的元素是奇异值,可视为是在输入与输出间进行的标量的"膨胀控制"。这些是M*M及 MM*的特征值的非零平方根,并与U和V的行向量相对应。

观察一个4×5的矩阵

M矩阵的奇异值分解如下UΣV *

。矩阵UV * 都是酉矩阵,它们乘上各自的共轭转置都等于单位矩阵。如下所示。在这个例子中,由于UV * 都是酉矩阵,所以他门都是正交矩阵。

 由于Σ有一个对角元素是o,所以这个奇异值分解不是唯一的。例如,例如V使得

能得到M的另一个奇异值分解。

二 奇异值分解的几何意义

研究将一个空间映射到不同空间,特别是不同维数的空间时候,例如超定或欠定方程组所表示的情况,就需要用矩阵的奇异值来描述算子对空间的作用了。

现在给定一个二维平面上的单位圆,在映射A的变化下(矩阵可以看成一种线性变化)

Matlab程序:

结果:

V是一个正交矩阵,我们现在让他把变化一下:(其实V就是一个简简单单的旋转,没有涉及到维数的变换)

S是一个3x2矩阵,他自然也是一种变化:

由上面可以看出,s是将原来的坐标进行拉长奇异值倍。而最后的(0,0表示原点坐标),变化如图:

其实S就是将平面上的单位圆拉升到三维空间上的椭圆。

U是一个3x3的矩阵,自然表示在三维空间的旋转了。如下图:

总结:若X是n维单位球面上的一点,则Ax是一个n维椭圆面上的点,其中椭圆的n个半轴上正好是A的n个奇异值。

简而言之:在二维空间下,奇异值将单位圆变成了椭圆。两个奇异值正好是椭圆的长轴和短轴。逆向,不就实现了降维了么?

三 奇异值在图形降噪方面的应用

如果我们单纯的用奇异值对一个矩阵图片进行奇异值分解,然后取其所有奇异值,那么这个过程是不会损失能量的,但是如果我们有意识的去除后面奇异值非常小的部分(奇异值默认是从大到小往下排列的)是不是就会损失一部分能量,有的人会问我,这个和降噪有什么必然的联系吗。

废话,当然有了,要不我写这个干吗。

废话不多说,先上matlab程序:

clear all;

close all;

clc;

a=imread('D:\Documents\MATLAB\shuaige.png');%本人帅照

%a=mat2gray(a)

a= rgb2gray(a);%灰度处理

imshow(mat2gray(a))%显示原图

[m,n]=size(a);

a=double(a);%把a里的数搞成双精度浮点型

r=rank(a);%求秩

[s,v,d]=svd(a);%对图片进行svd分解

%re=s*v*d';

,可以改变V和d的值,以便选取奇异值

figure;

imshow(mat2gray(re));%显示图片

imwrite(mat2gray(re),'1.jpg')

当我们直接对图片灰度化处理:(很明显,依然那么那么帅,哈哈)

现在我们取最大的那个奇异值得出的照片:(我屮艸芔茻,这什么生物,懵逼.GIF)

个最大的奇异值得出的照片:(帅气初现,有木有?哈哈)

试一试?(我这张帅照最大只能取到179):(perfect)

总结:我们总是认为噪声都是那些奇异值特别小的点造成的,这样我们设置一个阀值θ,如果奇异值大于θ,我们就取θ,否则就省略之,这样是不是就对矩阵进行降噪的了?

四 奇异值分解在推荐系统的应用

我知道我写的一定没有我下面上传的好,所以我选择上传。。。。。


浅显易懂。拿来主义一波。

原文链接:http://wenku.baidu.com/view/6bbc396633687e21ae45a910

谢谢大家

SVD的几何意义,以及在去噪,推荐系统中的应用的更多相关文章

  1. [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用

    本文先从几何意义上对奇异值分解SVD进行简单介绍,然后分析了特征值分解与奇异值分解的区别与联系,最后用python实现将SVD应用于推荐系统. 1.SVD详解 SVD(singular value d ...

  2. SVD及其在推荐系统中的作用

    本文先从几何意义上对奇异值分解SVD进行简单介绍,然后分析了特征值分解与奇异值分解的区别与联系,最后用python实现将SVD应用于推荐系统. 1.SVD详解 SVD(singular value d ...

  3. 多维数组分解----SVD在推荐系统中的应用-

    http://www.janscon.com/multiarray/rs_used_svd.html [声明]本文主要参考自论文<A SINGULAR VALUE DECOMPOSITION A ...

  4. NMF和SVD在推荐系统中的应用(实战)

    本文以NMF和经典SVD为例,讲一讲矩阵分解在推荐系统中的应用. 数据 item\user Ben Tom John Fred item 1 5 5 0 5 item 2 5 0 3 4 item 3 ...

  5. SVD在餐馆菜肴推荐系统中的应用

    SVD在餐馆菜肴推荐系统中的应用 摘要:餐馆可以分为很多类别,比如中式.美式.日式等等.但是这些类别不一定够用,有的人喜欢混合类别.对用户对菜肴的点评数据进行分析,可以提取出区分菜品的真正因素,利用这 ...

  6. SVD在推荐系统中的应用详解以及算法推导

    SVD在推荐系统中的应用详解以及算法推导     出处http://blog.csdn.net/zhongkejingwang/article/details/43083603 前面文章SVD原理及推 ...

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

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

  8. 转载:奇异值分解(SVD) --- 线性变换几何意义(下)

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

  9. 转载:奇异值分解(SVD) --- 线性变换几何意义(上)

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

  10. RS:推荐系统中的数据稀疏和冷启动问题

    如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题. 冷启动问题主要分为三类: (1) 用户冷启动:如何给新用户做个性化推荐的问题,新用户刚使 ...

随机推荐

  1. BI解决方案分享:地产BI数据分析系统的建设

    近几年中国地产行业发展迅猛,行业整合已成大势所趋,逐步由区域开发转变为集团化的跨地区综合开发商.然而,对于处在超常规速度发展的房地产企业来说,其面临的挑战也是超常规的.企业要在有限的资金和人力条件下, ...

  2. SQL Server附加数据库失败错误号:5120的解决办法

    附加数据库时出现附加数据库失败的错误,错误号是5120,已经两次遇到这种问题了.今天写一下解决办法. 有两个方法,很简单: 1.设置mdf文件所在文件夹的权限,在文件夹上右击——属性——安全,如图所示 ...

  3. Mac下安装Matlab R2015b

    步骤 下载Matlab R2015b链接:http://pan.baidu.com/s/1pLGpUfp 密码:k1xg 下载破解文件r2015b_crackhttp://download.csdn. ...

  4. Windows API 函数列表 附帮助手册

    所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...

  5. css之盒模型

    盒模型由内容(content).填充(padding).边框(border).边界(margin)组成,一个盒子中主要的属性就5个:width.height.padding.border.margin ...

  6. Oracle数据库,数据的增、删、改、查

    oracle数据库中,数据的增.删.改.查,通过SQL语句实现 SQL:结构化查询语言: 特点:不区分大小写:字符串用单引号引起来:语句结束用分号表示结束: 行注释,在语句的最前面加"--& ...

  7. jmeter之连接mysql和SQL Server配置

    下载jdbc驱动 在使用jmeter做性能或自动化测试的时候,往往需要直接对数据库施加压力,或者某些参数只能从数据库获取,这时候就必须使用jmeter连接数据库. 1.下载对应的驱动包 mysql驱动 ...

  8. 《饥荒游戏》SW BUG 刷猴子 & 刷淘气值 办法

    简介 该办法利用刷猴子的方式,通过杀猴子获取淘气值,从而刷出坎普斯,继而刷坎普斯背包 物品准备 灭火器x1 箱子x1 逗猴球x1 猴窝xN 帽贝岩x2 避雷针x1 操作步骤 1.灭火器建造在2个帽贝岩 ...

  9. 烂泥:ubuntu 14.04搭建OpenVPN服务器

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司分部需要连接公司内部的服务器,但是该服务器只允许公司内部的网络访问. 为了解决这个问题,打算使用VPN.对于VPN以前使用最多的是PPTP这个解决方案 ...

  10. [jquery]将当前时间转换成yyyymmdd格式

    如题: function nowtime(){//将当前时间转换成yyyymmdd格式 var mydate = new Date(); var str = "" + mydate ...