Re: [eigen] Including Spectra within Eigen 3.4

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Hi Oleg,

I think part of the reason is that when using Spectra to compute SVD of X, we are actually calculating the eigenvalues of X'X or XX'. However, this doubles the condition number of X, and hence the numerical precision and stability is reduced.

There are algorithms that can compute SVD without touching X'X, and I agree that these methods may be more appropriate for SVD problems. Bryan Lewis once wrote an article comparing the R pakcages "RSpectra" and "irlba", which also discussed the algorithm issues. https://bwlewis.github.io/irlba/comparison.html


Best,
Yixuan

2017-04-02 10:59 GMT-04:00 Oleg Shirokobrod <oleg.shirokobrod@xxxxxxxxx>:
Thanks Bill.
Matlab lmsvd gives the same singular values with tolerance 1.e-8 as Spectra code does with tolerance 1.e-10. It gives the same values with tolerance 1.e-19 as Spectra does with tolerance 1.e-12. It uses algorithm described in a paper: Xin Liu, Zaiwen Wen and Yin Zhang, Limited Memory Block Krylov Subspace Optimization for Computing Dominant Singular Value Decompositions, SIAM Journal on Scientific Computing, 35-3 (2013), A1641-A1668.
Does it mean that this algorithm converges faster than Spectra one?

Best regards,

Oleg Shirokobrod





--
Yixuan Qiu <yixuanq@xxxxxxxxx>
Department of Statistics,
Purdue University


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/