理想的SVD实现?

时间:2013-05-11 01:47:58

标签: matlab statistics machine-learning computer-vision

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

2 个答案:

答案 0 :(得分:2)

我发现this paper似乎很有帮助。

部分

45.2奇异值分解的算法

正在讨论不同的算法。

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

答案 1 :(得分:0)

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

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

Graphlab使用Eigen进行线性代数,不确定它们是否将它用于SVD。