并行计算奇异值分?/p>
--Jacobi
旋转
鉴于矩阵的奇异值分?/p>
SVD
在工程领域的广泛应用(如数据压缩、噪声去除、数值分析等等,包括?/p>
NLP
领域的潜?/p>
语义索引
LSI
核心操作也是
SVD
),今天就详细介绍一?/p>
SVD
的实现方?/p>
--Jacobi
旋转法。跟其它
SVD
算法相比?/p>
Jacobi
法精度高,虽然速度慢,但容易并行实现?/p>
一些链?/p>
http://cdmd.cnki.com.cn/Article/CDMD-10285-1012286387.htm
并行
JACOBI
方法求解矩阵奇异值的研究?/p>
本文呈现的代码就是依据这篇论文写出来的?/p>
http://math.nist.gov/javanumerics/jama/
Jama
包是用于基本线性代数运算的
java
包,提供矩阵?/p>
cholesky
分解?/p>
LUD
分解?/p>
QR
分解、奇异值分解,以及
PCA
中要用到的特征值分解,此外可以计算矩阵的乘除法、矩阵的?/p>
数和条件数、解线性方程组等?/p>
http://users.telenet.be/paul.larmuseau/SVD.htm
在线
SVD
运算器?/p>
http://www.bluebit.gr/matrix-calculator/
bluebit
在线矩阵运算器,提供矩阵的各种运算?/p>
http://www.drque.net/Projects/Matrix/
C++
Matrix library
提供矩阵的加减乘除、求行列式?/p>
LU
分解、求逆?/p>
求转置。本文的头两段程序就引用了这里面?/p>
matrix.h
?/p>
基于双边
Jacobi
旋转的奇异值分解算?/p>
V
?/p>
A
的右奇异向量,也?/p>
的特征向?/p>
;
U
?/p>
A
的左奇异向量,也?/p>
的特征向量?/p>
特别地,?/p>
A
是对称矩阵的时候,
=
,即
U=V
?/p>
U
的列向量不仅?/p>
的特征向量,也是
A



的特征向量。这一点在


主成分分?/p>


中会用到?/p>

对于正定的对称矩阵,奇异值等于特征值,奇异向量等于特征向量?/p>

U
?/p>
V
都是正交矩阵,满足矩阵的转置即为矩阵的逆?/p>
双边
Jacobi
方法本来是用来求?/p>
对称矩阵
的特征值和特征向量的,由于
就是对称矩阵,求?/p>
的特
征向量就求出?/p>
A
的右奇异值,
的特征值开方后就是
A
的奇异值?/p>
一?/p>
Jacobi
旋转矩阵
J
形如?/p>