Re: [eigen] Including Spectra within Eigen 3.4

[ Thread Index | Date Index | More Archives ]

The matrix in this test case is SPD so the simplest way to calculate
the SVD is to solve the eigenproblem
on the matrix itself. Spectra shows the same behavior on this
eigenproblem as with the SPD implementation.

I happened to notice that Arpack uses a default tolerance of machine
epsilon where Spectra is using a larger
value; so I simply reduced the tolerance.

On Sun, Apr 2, 2017 at 11:25 AM, Yixuan Qiu <yixuanq@xxxxxxxxx> wrote:
> 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.
> 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+