在很多线性代数问题中,如果我们首先思考若做SVD,情况将会怎样,那么问题可能会得到更好的理解[1]。

                                      --Lloyd N. Trefethen & David Bau, lll

为了讨论问题的方便以及实际中遇到的大多数问题,在这里我们仅限于讨论实数矩阵,注意,其中涉及到的结论也很容易将其扩展到复矩阵中(实际上,很多教材采用的是复矩阵的描述方式),另外,使用符号 x,y 等表示向量,A,B,Q等表示矩阵。

首先给出正交矩阵的概念。所谓正交矩阵,即该矩阵不同的两个列向量之间作内积等于0(平面几何中垂直的定义在多维情形下推广),相同的列向量和自身做内积等于1(单位向量)。特别地,如果Q是一个n阶正交方阵,则Q'Q=QQ'=I, 即正交矩阵的转置即是该矩阵的逆矩阵。正交矩阵在数值分析中起着很重要的作用,一个主要的原因是它能够保持向量的2范数不变(因此SVD也常用于最小二乘问题的求解中),以及矩阵的2范数以及F范数不变,即||Qx||_2=||x||_2, ||AQ||_2=||A||_2,||QA||_F=||A||_F。

奇异值分解定理:对于任意一个 m*n 的实数矩阵 A,都存在 m*m 的正交矩阵 U 和 n*n 的正交矩阵V,以及 m*n 的对角矩阵 D=diag(d_1,d_2,...,d_r),使得

  A = UDV'

其中,d_1>=d_2>=...>=d_r>=0 称为奇异值,U和V的各列分别称为左奇异向量右奇异向量

奇异值分解定理是一个漂亮优美的结果。它不仅能够很好地描述矩阵的结构,一个秩为r的矩阵可以表示成r个秩为1的矩阵之和,而且也给出了相应的几何意义,n 维单位向量 x 在任意的 m*n 矩阵 A=UDV' 下的像下是 m 维空间中的一个超椭球。具体地,正交变换V'保持了x的向量长度不变,对角矩阵D将球面拉伸到一个超椭球上,最后正交变换U将旋转这个超椭球,但不改变它的形状,参见下图。

图1 SVD几何解释示意图[2]

奇异值分解的矩阵性质:

1. 矩阵 A 的秩等于非零奇异值的个数

2. 矩阵 A 的值域空间等于由 U 的前 r 个列向量张成的空间,而 A 的零空间是由 V 的后面 n-r 个列向量张成的空间。

3. ||A||_2=d_1, ||A||_F=sqrt(d_1+...+d_r)。

4. A 的非零奇异值的平方等于 AA' 和 A’A 的非零特征值。

注意,一旦能够得到A的奇异值分解,按照上述给出的性质,那么关于A的秩,A的值域或者零空间的基,以及A的2-范数,F-范数等就自然地能够得到。从这方面来看,SVD可以看作是求解这些问题的一个工具。除此之外,它还被广泛地用来求解最小二乘问题,正则化问题,低秩逼近问题,数据压缩问题,文本处理中的分类问题[4]等

细心的童鞋发现,上面的所有结论都是建立在SVD定理正确以及能够有效计算出给定矩阵A的SVD分解的基础上。关于第一个问题,可以使用数学归纳法进行证明[3];第二个问题,由于证明中采用了数学归纳法,显然它不能有效地求解出具体矩阵的SVD分解,而数值求解SVD需要借助于对称矩阵的特征值分解(一个简单的想法是对 AA' 进行特征值分解,然后得到 A 的奇异值分解,可惜该类方法数值稳定性较差,细节内容不展开叙述)。

最后,对矩阵的奇异值和矩阵的特征值之间的联系进行几点说明。第一,对于任意矩阵,都存在奇异值分解,而并非所有矩阵都存在特征值分解的;第二,奇异值分解中使用的是正交的矩阵,而特征值分解中使用的基一般不是正交的;第三,矩阵最小奇异值小于矩阵最小特征值的模长,矩阵最大奇异值大于矩阵最大奇异值的模长[5]。

参考文献:

[1] 数值线性代数 Chap4-5,L N. Trefethen,David Bau, lll 著,陆金甫,关治译,人民邮电出版社,2006年

[2] 应用数值线性代数,J W. Demmel 著,王国荣译,人民邮电出版社,2007年

[3] 矩阵计算(第三版),Gene H.Golub,Charles F.Van Loan 著,袁亚湘等译,人民邮电出版社,2011年

[4] 数学之美 Chap15,吴军著,人民邮电出版社,2013年

[5] 矩阵A的特征值与奇异值大小关系? https://www.zhihu.com/question/40181430/answer/85446211

作者:caicailiu 出处:http://www.cnblogs.com/liuyc/  欢迎转载或分享,但请务必声明文章出处。

数值分析之奇异值分解(SVD)篇的更多相关文章

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

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

  2. 奇异值分解(SVD) --- 几何意义

    原文:http://blog.sciencenet.cn/blog-696950-699432.html PS:一直以来对SVD分解似懂非懂,此文为译文,原文以细致的分析+大量的可视化图形演示了SVD ...

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

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

  4. 【转载】奇异值分解(SVD)计算过程示例

    原文链接:奇异值分解(SVD)的计算方法 奇异值分解是线性代数中一种重要的矩阵分解方法,这篇文章通过一个具体的例子来说明如何对一个矩阵A进行奇异值分解. 首先,对于一个m*n的矩阵,如果存在正交矩阵U ...

  5. 一步步教你轻松学奇异值分解SVD降维算法

    一步步教你轻松学奇异值分解SVD降维算法 (白宁超 2018年10月24日09:04:56 ) 摘要:奇异值分解(singular value decomposition)是线性代数中一种重要的矩阵分 ...

  6. 用 GSL 求解超定方程组及矩阵的奇异值分解(SVD)

    用 GSL 求解超定方程组及矩阵的奇异值分解(SVD) 最近在学习高动态图像(HDR)合成的算法,其中需要求解一个超定方程组,因此花了点时间研究了一下如何用 GSL 来解决这个问题. GSL 里是有最 ...

  7. 奇异值分解(SVD)原理详解及推导(转载)

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有 ...

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

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

  9. 奇异值分解(SVD)原理详解及推导 (转载)

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有 ...

随机推荐

  1. java6

    1:二维数组(理解) (1)元素是一维数组的数组. (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; B:数据类型[][] 数组名 = new 数据类型[m][]; C: ...

  2. delphi 各新版本特性收集

    delphi 各新版本特性收集 http://www.cnblogs.com/dreamszx/p/3602589.html

  3. 「转」xtrabackup新版详细说明

    声明:本文由我的同事@fiona514编写,是我看过的最用心的中文说明介绍,强烈推荐大家学习使用. Percona Xtrabackup 2.4.1 编译及软件依赖 centos5,6 需要升级cma ...

  4. Huffman的应用_Huffman编码

    //最优二叉树 #include <iostream> #include <iomanip> using namespace std; //定义结点类型 //[weight | ...

  5. hdu 1502 Regular Words

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1502 思路:给定一个n,分别由n个a,b,c组成的字符串的所有前缀中a的个数大于等于b的个数大于等于c的个 ...

  6. Swift 提示:Initialization of variable was never used consider replacing with assignment to _ or removing it

    Swift 提示:Initialization of variable was never used consider replacing with assignment to _ or removi ...

  7. Android:联系人Contacts之ContentResolver query 参数详解

    注:本片整理自 http://blog.csdn.net/wssiqi/article/details/8132603 1.获取联系人姓名 一个简单的例子,这个函数获取设备上所有的联系人ID和联系人N ...

  8. [译]SSAS下玩转PowerShell(三)

    在第一篇中简单介绍了PowerShell,包含基本的一些命令,以及如何打开PowerShell,并且导航到SSAS对象.第二篇中学习了如何使用变量根据当前日期创建SSAS备份,以及如何运行MDX和XM ...

  9. UC浏览器 分享到朋友圈和微信好友 分类: JavaScript 2015-04-28 14:45 615人阅读 评论(1) 收藏

    用手机UC浏览器访问新浪微博,会注意到有这样的两个分享按钮: 在手机端浏览器里,点击分享按钮,就可以启动微信客户端并分享到微信.研究了下其源代码,存在这样的一个js:http://mjs.sinaim ...

  10. [leetcode] 题型整理之查找

    1. 普通的二分法查找查找等于target的数字 2. 还可以查找小于target的数字中最小的数字和大于target的数字中最大的数字 由于新的查找结果总是比旧的查找结果更接近于target,因此只 ...