奇异值分解的揭秘(一):矩阵的奇异值分解过程
转载来源:
作者:Xinyu Chen
链接:https://zhuanlan.zhihu.com/p/26306568
来源:知乎
矩阵的奇异值分解(singular value decomposition,简称SVD)是线性代数中很重要的内容,并且奇异值分解过程也是线性代数中相似对角化分解(也被称为特征值分解,eigenvalue decomposition,简称EVD)的延伸。因此,以下将从线性代数中最基础的矩阵分解开始讲起,引出奇异值分解的定义,并最终给出奇异值分解的低秩逼近问题相关的证明过程。
1 线性代数中的矩阵分解
我们在学习线性代数时,就已经接触了线性代数中的两个重要定理,即对角化定理和相似对角化定理,在这里,我们先简单地回顾一下这两个定理。另外,在接下来的篇幅里,我们所提到的矩阵都是指由实数构成的矩阵,即实矩阵。
给定一个大小为的矩阵
(是方阵),其对角化分解可以写成
其中,的每一列都是特征向量,
对角线上的元素是从大到小排列的特征值,若将
记作
,则
更为特殊的是,当矩阵是一个对称矩阵时,则存在一个对称对角化分解,即
其中,的每一列都是相互正交的特征向量,且是单位向量,
对角线上的元素是从大到小排列的特征值。
当然,将矩阵记作
,则矩阵
也可以写成如下形式:
举一个简单的例子,如给定一个大小为的矩阵
,根据
求得特征值为
,
,相应地,
,
,则
.
这样,我们就很容易地得到了矩阵的对称对角化分解。
2 奇异值分解的定义
在上面,对于对称的方阵而言,我们能够进行对称对角化分解,试想:对称对角化分解与奇异值分解有什么本质关系呢?
当给定一个大小为的矩阵
,虽然矩阵
不一定是方阵,但大小为
的
和
的
却是对称矩阵,若
,
,则矩阵
的奇异值分解为
其中,矩阵的大小为
,列向量
是
的特征向量,也被称为矩阵
的左奇异向量(left singular vector);矩阵
的大小为
,列向量
是
的特征向量,也被称为矩阵
的右奇异向量(right singular vector);矩阵
大小为
,矩阵
大小为
,两个矩阵对角线上的非零元素相同(即矩阵
和矩阵
的非零特征值相同,推导过程见附录1);矩阵
的大小为
,位于对角线上的元素被称为奇异值(singular value)。
接下来,我们来看看矩阵与矩阵
和矩阵
的关系。令常数
是矩阵
的秩,则
,当
时,很明显,矩阵
和矩阵
的大小不同,但矩阵
和矩阵
对角线上的非零元素却是相同的,若将矩阵
(或矩阵
)对角线上的非零元素分别为
,其中,这些特征值也都是非负的,再令矩阵
对角线上的非零元素分别为
,则
即非零奇异值的平方对应着矩阵(或矩阵
)的非零特征值,到这里,我们就不难看出奇异值分解与对称对角化分解的关系了,即我们可以由对称对角化分解得到我们想要的奇异值分解。
为了便于理解,在这里,给定一个大小为的矩阵
,虽然这个矩阵是方阵,但却不是对称矩阵,我们来看看它的奇异值分解是怎样的。
由进行对称对角化分解,得到特征值为
,
,相应地,特征向量为
,
;由
进行对称对角化分解,得到特征值为
,
,相应地,特征向量为
,
。取
,则矩阵
的奇异值分解为
.
若矩阵不再是一个方阵,而是一个大小为
的
,由
得到特征值为
,
,特征向量为
,
,
;由
得到特征值为
,
,特征向量为
,
,令
(注意:矩阵
大小为
),此时,矩阵
的奇异值分解为
.
比较有趣的是,假设给定一个对称矩阵,它是对称矩阵,则其奇异值分解是怎么样的呢?
分别计算和
,我们会发现,
,左奇异向量和右奇异向量构成的矩阵也是相等的,即
,更为神奇的是,该矩阵的奇异值分解和对称对角化分解相同,都是
。这是由于对于正定对称矩阵而言,奇异值分解和对称对角化分解结果相同。
3 奇异值分解的低秩逼近
在对称对角化分解中,若给定一个大小为的矩阵
,很显然,矩阵
的秩为
,特征值为
,
,
,对应的特征向量分别为
,
,
,考虑任意一个向量
,则
在这里,我们会发现,即使是一个任意向量,用矩阵
去乘以
的效果取决于
较大的特征值及其特征向量,类似地,在奇异值分解中,较大的奇异值会决定原矩阵的“主要特征”,下面我们来看看奇异值分解的低秩逼近(有时也被称为截断奇异值分解)。需要说明的是,接下来的部分是从文献《A Singularly Valuable Decomposition: The SVD of a Matrix》整理而来的。
给定一个大小为的矩阵
,由于
可以写成
其中,向量之间相互正交,向量
之间也相互正交,由内积
(有兴趣的读者可以自行推算)得到矩阵
的F-范数的平方为
知道了矩阵的F-范数的平方等于其所有奇异值的平方和之后,假设
是矩阵
的一个秩一逼近(rank one approximation),那么,它所带来的误差则是
(
是矩阵
的秩),不过如何证明
是最好的秩一逼近呢?
由于(证明过程见附录2),令
,其中,
是一个正常数,向量
和
分别是大小为
和
的单位向量,则
单独看大小为的矩阵
和
的内积
,我们会发现,
其中,需要注意的是,分别是向量
和
的第
个元素;向量
的大小为
,向量
的大小也为
,另外,以
为例,
是向量的模,则
(残差矩阵的平方和)为
当且仅当时,
取得最小值
,此时,矩阵
的秩一逼近恰好是
.
当然,我们也可以证明是矩阵
的最佳秩一逼近,以此类推,
是矩阵
的最佳秩一逼近。由于矩阵
的秩为
,这样,我们可以得到矩阵
的最佳秩
逼近(rank-
approximation),即
.
这里得到的矩阵的大小为
,矩阵
的大小为
,矩阵
的大小为
,矩阵
可以用
来做近似。
用低秩逼近去近似矩阵有什么价值呢?给定一个很大的矩阵,大小为
,我们需要存储的元素数量是
个,当矩阵
的秩
远小于
和
,我们只需要存储
个元素就能得到原矩阵
,即
个奇异值、
个左奇异向量的元素和
个右奇异向量的元素;若采用一个秩
矩阵
去逼近,我们则只需要存储更少的
个元素。因此,奇异值分解是一种重要的数据压缩方法。
另外,关于奇异值分解的应用将在该系列后续文章中进行详述。
---------------------------------------------------------------
附录1:相关链接:Largest eigenvalues of AA' equals to A'A,截图如下:
附录2:求证:,其中,
,
.
证明:
奇异值分解的揭秘(一):矩阵的奇异值分解过程相关推荐
- 矩阵的奇异值分解过程
原著 矩阵的奇异值分解(singular value decomposition,简称SVD)是线性代数中很重要的内容,并且奇异值分解过程也是线性代数中相似对角化分解(也被称为特征值分解,eigenv ...
- 机器学习中的数学基础:(2)矩阵的奇异值分解(SVD)及其应用
在机器学习领域,有相当多的应用与奇异值都可以扯上关系,比如做feature reduction的PCA,做数据压缩(以图像压缩为代表)的算法,还有做搜索引擎语义层次检索的LSI(Latent Sema ...
- 矩阵的奇异值分解_线性代数31——奇异值分解
奇异值分解(Singular value decomposition)简称SVD,是将矩阵分解为特征值和特征向量的另一种方法.奇异值分解可以将一个比较复杂的矩阵用更小更简单的几个子矩阵相乘来表示,这些 ...
- 矩阵的奇异值分解(SVD)及其应用
矩阵的奇异值分解(SVD)及其应用 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com,本文可以被全部的转载或者部分使用,但请注明出处,如果有问 ...
- 线性代数基础13--相似矩阵与奇异值分解
1,正定矩阵补充 如果矩阵A为正定矩阵,那么A的逆矩阵也一定是正定矩阵,因为其特征值等于A特征值的倒数. 如果A,B矩阵正定,那么A+B矩阵也正定.注意这里A+B矩阵的特征值不一定等于A,B特征值相加 ...
- 主成分分析PCA和矩阵的奇异值分解SVD
PCA和SVD 引言:在机器学习中,因为高纬空间样本具有稀疏性,导致模型比较难找到数据特征等原因.所以需要进行高维数据样本的降维,其中比较常使用的一种降维方法就是PCA.PCA主要是用于数据的降维 ...
- 推荐系统中的矩阵分解| 奇异值分解及改进、因子分解机
网络中的信息量呈现指数式增长,随之带来了信息过载问题.推荐系统是大数据时代下应运而生的产物,目前已广泛应用于电商.社交.短视频等领域.本文将针对推荐系统中基于隐语义模型的矩阵分解技术来进行讨论. 目录 ...
- 豪斯荷尔德变换及变形QR算法对矩阵进行奇异值分解VB算法
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- 奇异值分解与低秩矩阵近似
奇异值分解 任何实矩阵\(\textbf{A} \in \mathbb{R}^{m \times n}\)都可以分解为 $\textbf{A} = \textbf{U}\Sigma\textbf{ ...
最新文章
- linux文本编辑nano
- stm32 窗口看门狗学习(二)
- [转]解决IE下CSS背景图片闪烁的Bug
- js 匿名函数_编写高质量箭头函数的5个最佳做法
- 【论文阅读】Deep Modular Co-Attention Networks for Visual Question Answering
- 将经纬度转换为以度为单位的xy坐标
- 北京思想聚合科技有限公司
- android 蓝牙地址连接打印机,android 连接蓝牙打印机 BluetoothAdapter
- Google浏览器被劫持解决方法
- Verilog-半加器(简单组合逻辑)
- php怎么定义字符串变量的值,php字符串变量怎么替换
- 特征值(eigenvalue)特征向量(eigenvector)特征值分解(eigenvalue decomposition)
- linuxconfig文件
- mmap函数的用法详解及实例分析
- 基于Matlab/simulink的VSG虚拟同步机控制
- 【北风的第二次任务】
- 对共享单车摆放问题的调研
- 计算存储器芯片,构成地址40000000H到400FFFFFH且按字节编址的内存区域
- 调试微信 PC 端的内置浏览器界面
- Python reduce 函数