我使用truncatedSVD和30000 x 40000大小的term-document矩阵将尺寸减小到3000维, 当使用' randomized'时,方差比约为0.5(n_iter = 10) 当使用' arpack'时,方差比约为0.9
随机化的方差比'算法低于' arpack'。
为什么scikit-learn truncatedSVD使用'随机化'算法默认?
答案 0 :(得分:5)
速度!
根据docs,由于Halko, Martinson, and Tropp (2009).,sklearn.decomposition.TruncatedSVD
可以使用随机算法。本文声称他们的算法速度要快得多。
对于密集矩阵,它在O(m * n * log(k))时间运行,而经典算法需要O(m * n * k)时间,其中m和n是矩阵的维数你想要第k个最大的组件。随机算法也更容易有效地并行化,并且对数据的传递更少。
本文的表7.1(第45页)显示了一些算法的性能,它们是矩阵大小和组件数的函数,随机算法的速度通常要快一个数量级。
输出的准确性也声称非常好(图7.5),虽然有一些修改和常量可能会影响它,但我还没有通过sklearn代码看看他们做了什么/做了什么不行。