1
$\begingroup$

I am trying to apply SVD to large sparse matrices. I already compared the performances of Propack and irlba to those of the matlab svd and svds. These two packages enhance significantly the computing time but I still have to handle the memory issue. Therefore, I am looking for a free matrix SVD algorithm which allows me to compute M largest singulars values on the fly without having to compute the entire matrix at the entry of the SVD. I read about Incremental SVD http://www.math.fsu.edu/~cbaker/IncPACK/ and also saw this topic mentioning using Lanczos with Fast Block matrix-vector multiplication via FFTs instead of the SVD SVD of large block-hankel matrix but since I am not specialist I still can not see an easy way to compute the SVD without bearing the memory cost of computing the entire matrix. Can someone help me to find out?

$\endgroup$

1 Answer 1

1
$\begingroup$

Incremental SVD methods will only help you if you want to calculate a truncated (preferably low-rank) SVD. The memory requirements for these algorithms are more or less the ability to store a single column of your large sparse matrix plus the current truncated SVD. If you attempt to calculate the whole SVD with an incremental method, you won't save that much memory; however, if you only calculate the left singular vectors and singular values, you could conceivably save memory if your matrix has many more columns than rows.

$\endgroup$
4
  • $\begingroup$ Yes I am actually trying to calculate a truncated low-rank SVD. I need this SVD to implement a PCA so I think that I only need the left singular vectors and singular values, but I am working for the moment with an approximately square matrix. Anyway I can give it a try, could you please tell me how do you think I can use the IncPack package to compute the SVD column by column ? Thanks. $\endgroup$ Aug 26, 2015 at 1:50
  • $\begingroup$ You have to read the documentation of the package for that. $\endgroup$ Aug 26, 2015 at 1:59
  • $\begingroup$ Why not using the randomized SVD? If M small it is very efficient. $\endgroup$
    – Gil
    Nov 22, 2015 at 7:58
  • $\begingroup$ Sure, that's also an option. $\endgroup$ Nov 23, 2015 at 0:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.