MultivariateStats.jl
MultivariateStats.jl copied to clipboard
using truncated SVD for whitening in ICA gives 5-10x speedup on large inputs
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)
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.