Ideal implementation of SVD?

Of course, the ideal is subjective. I do some research when I need to implement production level code to compute SVD for a rectangular matrix. So, here is what I learned, GraphLab and Mahout use Lanczos Algorithm to implement SVD, while I found that other methods include QR decomposition and Jacobi method. My question is, what is the most preferred method when calculating SVD? And why?

+4
source share
2 answers

I find this article that seems to be helpful.

In chapter

45.2 Singular value decomposition algorithms

various algorithms are discussed.

Algorithms differ depending on whether it includes iteration and what exact result is needed, say, if you just want your own vector, everything will be a little different.

+2
source

You can try the Eigen library for C ++, it has very good performance and is not difficult to use if you are a C ++ programmer:

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

Graphlab uses Eigen for linear algebra, not sure if they use it for SVD.

0
source

Source: https://habr.com/ru/post/1480190/


All Articles