线性代数之奇异值(SVD)分解
来源:互联网 发布:java ftpserver 编辑:程序博客网 时间:2024/05/18 00:07
From http://www.qiujiawei.com/linear-algebra-9/
在线性代数中,SVD(Singular Value Decomposition)是对实数矩阵(甚至复数矩阵)的一种因式分解。在信号、统计、图像图形学中都有应用。
SVD非常强大且实用,因为数学界前辈已经证明任意的一个矩阵都可以做SVD分解。这一点特别重要,因为相比SVD分解,和SVD相近的特征值分解只能应用于方阵。
第二个重要的点是:SVD分解可用来解决非方阵不能计算逆矩阵的问题。
SVD的定义
先给出公式的全貌:
设有一个m X n的矩阵M,它的SVD分解是:
其中:
- U是一个m X m的单式矩阵(Unitary Matrix)
- Σ是m X n的矩形对角矩阵(Rectangular Diagonal Matrix),并且在对角线上的元素都是非负实数
σi ,称为M的奇异值 - V*是一个n X n的单式矩阵,也是V的共轭转置矩阵(Conjugate Transpose Matrix)
一些补充:
- U矩阵的m个列向量、V的n个列向量分别被称为M的左奇异向量,和M的右奇异向量
- 约定Σ矩阵的对角线上的奇异值
σi 用降序排列 - 由第2点可以看出,Σ矩阵完全由M决定,和U、V无关
SVD和特征值分解的联系
- M的左奇异向量 是
MM∗ 的特征向量 - M的右奇异向量 是
M∗M 的特征向量 - M的非零奇异值(即Σ的对角线上的元素)分别是
M∗M 以及MM∗ 的所有非零特征值的开平方
由单式矩阵的定义,知:
由矩形对角矩阵的定义,知:
(D = Diagonal Square Matrix)
即,Σ和Σ的转置相乘,等于一个新的方阵D,D的阶数等于左边的Σ矩阵的行数;D还是一个对角方阵,且对角线上的元素分别是Σ的对角线上的元素的平方。
再根据SVD公式:
有:
右边的东西符合特征分解的定义,所以上述两式子都是特征分解。
SVD的几何意义以及应用
推荐阅读这篇文章:http://blog.chinaunix.net/uid-20761674-id-4040274.html。
英文原文:http://www.ams.org/samplings/feature-column/fcarc-svd
不过这文章只讲了和图像有关的应用,实际上,SVD的应用非常广泛,比如机器学习领域也在用。
SVD的求法
SVD的解法有很多种而且看起来很复杂,比如这篇文章就列举了很多种:http://www.cs.utexas.edu/users/inderjit/public_papers/HLA_SVD.pdf。
因为矩阵有稠密和稀疏之分,所以针对不同的矩阵就有不同的解法。学习SVD的解法想必是一件艰苦的事情。因为目前还没有深入学习SVD的需求,所以博主就此罢笔。
参考资料
https://en.wikipedia.org/wiki/Singular_value_decomposition
- 线性代数之奇异值(SVD)分解
- 线性代数之奇异值(SVD)分解
- 数学之线性代数——奇异值分解SVD
- SVD奇异值分解
- SVD奇异值分解
- SVD奇异值分解
- SVD奇异值分解
- 奇异值分解(SVD)
- SVD奇异值分解
- 奇异值分解(SVD)
- SVD奇异值分解
- SVD奇异值分解
- SVD奇异值分解
- svd奇异值分解
- 奇异值分解(SVD)
- 奇异值分解(SVD)
- SVD奇异值分解
- SVD奇异值分解
- [bzoj] 1697: [Usaco2007 Feb]Cow Sorting牛排序
- symbolicate iOS Crash Log
- 有关myeclipse上的web项目不能在eclipse上运行的相关
- JDBC 事务简要说明
- 2017-5-25-开始工作啦
- 线性代数之奇异值(SVD)分解
- 5.25 git 学习笔记
- 0/1背包
- 加入天空盒-04
- spring 模块
- 算法导论程序24--直接寻址表(Python)
- Java 8 – 从一个 Stream中过滤null值
- Mybatis 工作原理
- 安装ELK时logstash出现[logstash.outputs.elasticsearch] Unknown setting 'host' for elasticsearch