4

当然,理想是主观的。我正在做一些研究,我需要为矩形矩阵的 SVD 计算实现生产级代码。所以这就是我发现的,GraphLab 和 Mahout 使用 Lanczos 算法来实现 SVD,而我发现其他方法包括 QR 分解和 Jacobi 方法。我的问题是计算 SVD 的首选方法是什么?为什么?

4

2 回答 2

2

我发现这篇论文似乎很有帮助。

在部分

45.2 奇异值分解的算法

正在讨论不同的算法。

算法的不同之处在于是否涉及迭代,以及需要什么确切的输出,比如如果你只想要特征向量,事情会有点不同。

于 2013-05-12T16:28:26.817 回答
0

您可以尝试 C++ 的 Eigen 库,它具有非常好的性能,如果您是 C++ 程序员,使用起来并不难:

http://eigen.tuxfamily.org/dox/classEigen_1_1JacobiSVD.html

Graphlab 将 Eigen 用于线性代数,不确定他们是否将其用于 SVD。

于 2014-05-18T15:34:54.063 回答