奇异值分解

SVD分解(奇异值分解),本应是本科生就掌握的方法,然而却经常被忽视。实际上,SVD分解不但很直观,而且极其有用。SVD分解提供了一种方法将一个矩阵拆分成简单的,并且有意义的几块。它的几何解释可以看做将一个空间进行旋转,尺度拉伸,再旋转三步过程。

首先来看一个对角矩阵,

几何上,
我们将一个矩阵理解为对于点 (x,
y)
 从一个平面到另一个平面的映射:

下图显示了这个映射的效果:
平面被横向拉伸了3倍,纵向没有变化。







对于另一个矩阵

它的效果是








这样一个变化并不是很好描述,然而当我们将坐标系旋转45度后,我们可以看出







这时,我们发现这个新的网格上发生的变化和网格在对角阵下发生变化的效果相似。

这是一个对称矩阵的例子,可以看出,对称矩阵经过旋转后,其作用就和对角阵类似了。数学上,对于一个对称矩阵M,
我们可以找到一组正交向量 vi 从而 Mvi 相当于 vi上的标量乘积; 也就是

Mvi = λiviλi 是标量,也就是对应对角阵中对角线上的元素. 由于这个性质,我们称 vi 是 M 的特征向量; 
λi 为特征值.
一个对称矩阵不同特征值对应的特征向量是正交的。

对于更广泛的情况,我们看看是否能从一个正交网格转换到另一个正交网格.
考虑一个非对称矩阵:

这个矩阵的效果形象的称为剃刀(shear)。







这个矩阵将网格在水平方向拉伸了,而垂直方向没有变化。如果我们将网格旋转大约58度,这两个网格就又会都变为正交的了。







奇异值分解:


考虑一个
2 *2 矩阵, 我们可以找到两组网格的对应关系。用向量表示,那就是当我们选择合适的单位正交向量 v1 和v2Mv1 和 Mv2 也是正交的.







我们使用 u1 和 u2 代表 Mv1 和 Mv2的方向.  Mv1 和 Mv2 的长度表示为 σ1 和
σ2,也就是网格在每个方向的拉伸.这两个拉伸值叫做M的 奇异值(sigular
value)

和前面类似,我们可以

Mv1 =
σ1u1

Mv2 =
σ2u2

我们一直讨论的 v1 和 v2 是一对正交向量,
对于一般的向量 x,我们有这样的投影关系

x =
(v1xv1 +
(v2xv2也就是说

Mx =
(v1xMv1 + (v2xMv2Mx = (v1x) σ1u1 + (v2x)
σ2u

Mx = u1σ1 v1Tx + u2σ2 v2Tx   
--->     
M = u1σ1 v1T + u2σ2 v2T

这个关系可以写成矩阵形式

M = UΣVTU 的列是 u1 和 u2, Σ 
σ1 和
σ2构成的对角阵,  V 的列是 v1 和 v2
即V描述了域中的一组正交基,U描述了相关域的另一组正交基,Σ 表述了U中的向量与V中向量的拉伸关系。

寻找奇异值分解


奇异值分解可以应用于任何矩阵,对于前面的例子,如果我们加上一个圆,那它会映射成一个椭圆,椭圆的长轴和短轴定义了新的域中的正交网格,可以被表示为Mv1 and Mv2














换句话说,单位圆上的函数
|Mx| 在  v1 取得最大值,在 v2取得最小值.
这将单位圆上的函数优化问题简化了。可以证明,这个函数的极值点就出现在MTM的特征向量上,这个矩阵一定是对称的,所以不同特征值对应的特征向量vi是正交的.

σi = |Mvi|就是奇异值,  ui 是 Mvi方向的单位向量.

Mvi = σiui
Mvj = σjuj.
Mvi Mvj = viTMT Mvj = vi MTMvj =
λjvi vj =
0.也就是

Mvi Mvj = σiσj ui uj =
0因此, ui 和 uj 也是正交的。所以我们就把一组正交基 vi 变换到了另一组正交基 ui.

另一个例子


我们来看一个奇异矩阵(秩为1,或只有一个非零奇异值)

它的效果如下








在这个例子中,第二个奇异值为0,所以
M = u1σ1 v1T.
也就是说,如果有奇异值为0,那么这个矩阵就有降维的效果。因为0奇异值对应的维度就不会出现在右边。这对于计算机科学中的数据压缩极其有用。例如我们想压缩下面的15 25
像素的黑白图像

我们可以看出这个图像中只有三种列,即

  把图像表示成一个15  25 的矩阵,总共有 375 个元素.

然而当我们做了奇异值分解,会发现非零奇异值仅有3个,

σ1 = 14.72,
σ2 = 5.22,
σ3 =
3.31 因此,这个矩阵就可以被表示为   M=u1σ1 v1T + u2σ2 v2T + u3σ3 v3T

也就是说我们用三个长度为15的向量vi,三个长度为25的向量ui,以及三个奇异值,总共123个数字表示了这个375个元素组成的矩阵。奇异值分解找到了矩阵中的冗余信息实现了降维。

可以看出,奇异值分解捕获了图像中的主要信息。因此,又假设上一个例子里引入了噪声,

当我们用同样的方法做奇异值分解,我们得到如下非零奇异值

σ1 =
14.15,σ2 =
4.67,σ3 =
3.00,σ4 =
0.21,σ5 =
0.19,...,σ15 =
0.05显然,前三个奇异值比其他的大很多,说明其中包括了绝大部分信息。如果我们只要前三个,

M  u1σ1 v1T + u2σ2 v2T + u3σ3 v3T

我们就实现了图像的降噪。









Noisy image Improved image

奇异值分解

时间: 2024-07-29 03:30:06

奇异值分解的相关文章

奇异值分解(SVD) --- 几何意义 (转载)

PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD的几何意义.能在有限的篇幅把 这个问题讲解的如此清晰,实属不易.原文举了一个简单的图像处理问题,简单形象,真心希望路过的各路朋友能从不同的角度阐述下自己对SVD实际意义的理 解,比如 个性化推荐中应用了SVD,文本以及Web挖掘的时候也经常会用到SVD. 原文:We recommend a singular value decomposition 关于线性变换部分的一些知识可以猛戳这里  奇异值分解(S

自适应滤波:奇异值分解SVD

作者:桂. 时间:2017-04-03  19:41:26 链接:http://www.cnblogs.com/xingshansi/p/6661230.html 声明:欢迎被转载,不过记得注明出处哦~ [读书笔记10] 前言 广义逆矩阵可以借助SVD进行求解,这在上一篇文章已经分析.本文主要对SVD进行梳理,主要包括: 1)特征向量意义: 2)特征值分解与SVD: 3)PCA与SVD: 内容为自己的学习记录,其中多有借鉴他人之处,最后一并给出链接. 一.特征向量 第一反应是:啥是特征向量?为什

矩阵奇异值分解SVD

矩阵分解有两种一种是特征值分解,但是其针对方阵,所以提出了奇异值分解. 分解过程为: U的列组成一套对A的正交"输入"或"分析"的基向量.这些向量是的特征向量. V的列组成一套对A的正交"输出"的基向量.这些向量是的特征向量 得到的是右奇异向量, 是奇异值,u是左奇异向量, 奇异值跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了.也就是说,我们也可以用前

转!奇异值分解及几何意义

PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD的几何意义.能在有限的篇幅把这个问题讲解的如此清晰,实属不易.原文举了一个简单的图像处理问题,简单形象,真心希望路过的各路朋友能从不同的角度阐述下自己对SVD实际意义的理解,比如 个性化推荐中应用了SVD,文本以及Web挖掘的时候也经常会用到SVD. 英文原文:We recommend a singular value decomposition 简介 SVD实际上是数学专业内容,但它现在已经渗入到不同

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

本文先从几何意义上对奇异值分解SVD进行简单介绍,然后分析了特征值分解与奇异值分解的区别与联系,最后用python实现将SVD应用于推荐系统. 1.SVD详解 SVD(singular value decomposition),翻译成中文就是奇异值分解.SVD的用处有很多,比如:LSA(隐性语义分析).推荐系统.特征压缩(或称数据降维).SVD可以理解为:将一个比较复杂的矩阵用更小更简单的3个子矩阵的相乘来表示,这3个小矩阵描述了大矩阵重要的特性. 1.1奇异值分解的几何意义(因公式输入比较麻烦

奇异值分解(转载)

转载自:http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补充的,特别是关于矩阵和映射之间的对应关系.前段时间看了国外的一篇文章,叫A Singularly Valuable Decomposition The SVD of a Matrix,觉得分析的特别好,把矩阵和空间关系对应了起来.本文就参考了该文并结合矩阵的相关知识把SVD原理梳理一下. SVD不仅

如何轻松干掉svd(矩阵奇异值分解),用代码说话

svd我认识我机器学习里面最扯淡的玩意了.尼玛.老实说,好多机器学习的书老是在扯svd有多高端,然后看了netflix电影推荐大赛,哇塞,冠军队就是用svd+做的.然后狠狠的下载了所有他们的论文,硬是没看明白.后来居然对svd有恐惧感.感觉这个玩意好高端似的.你看他啊,它能提高预测精度,它好像是万能的,能降维,什么比赛有事没事都要扯扯svd.后来看Kaggle上的比赛,有个walmat仓储量预测大赛,也是对数据先用svd预处理. 回去下载了好多svd论文看,搞了好久都没搞明白.他们都是说自己如何

机器学习实战精读--------奇异值分解(SVD)

奇异值分解(SVD):是一种强大的降维工具,通过利用SVD来逼近矩阵并从中提取重要特征,通过保留矩阵80%~ 90%的能量,就能得到重要的特征并去掉噪声 SVD分解会降低程序的速度,大型系统中SVD每天运行一次或者频率更低,并且还要离线进行. 隐性语义索引(LST):试图绕过自然语言理解,用统计的办法得到相同的目标 隐性语义分析(LSA):LSA的基本思想就是把高维的文档降到低维空间,那个空间被称为潜在语义空间 协同过滤:通过将用户和其它用户的数据进行对比来实现推荐. 协同过滤的缺点: ① 用户

SVD 奇异值分解

强大的矩阵奇异值分解(SVD)及其应用 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系[email protected].也可以加我的微博: @leftnoteasy 前言: 上一次写了关于PCA与LDA的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的.在上篇文章中便是基于特征值分解的一种解释.特征值和奇异值在大部分人的印象中,往

数值分析之奇异值分解(SVD)篇

在很多线性代数问题中,如果我们首先思考若做SVD,情况将会怎样,那么问题可能会得到更好的理解[1].                                       --Lloyd N. Trefethen & David Bau, lll 为了讨论问题的方便以及实际中遇到的大多数问题,在这里我们仅限于讨论实数矩阵,注意,其中涉及到的结论也很容易将其扩展到复矩阵中(实际上,很多教材采用的是复矩阵的描述方式),另外,使用符号 x,y 等表示向量,A,B,Q等表示矩阵. 首先给出正交矩阵