JuliaStats / MultivariateStats.jl

A Julia package for multivariate statistics and data analysis (e.g. dimension reduction)
Other
377 stars 86 forks source link

using truncated SVD for whitening in ICA gives 5-10x speedup on large inputs #119

Open ghost opened 4 years ago

ghost commented 4 years ago

Using truncted SVD for whitening gives huge speedup for me, could be done by replacing the following code:

        Efac = eigen(C)
        ord = sortperm(Efac.values; rev=true)
        (v, P) = extract_kv(Efac, ord, k)

with P, v, _ = tsvd(C, k)

wildart commented 4 years ago

Too bad, that tsvd doesn't follow LinearAlgebra interface by returning SVD object. It's a good that you mention a possibility of other eigendecomposition methods. But, it would require to rewrite API to abstract eigendecomposition part of the package. I have a long standing plan to revise the package interface, see #94. I'll definitely consider this issue during the rewrite. As of a time horizon, can't say anything at this point.