gpt4 book ai didi

scikit-learn - 为什么 scikit-learn truncatedSVD 默认使用 'randomized' 算法?

转载 作者:行者123 更新时间:2023-12-01 10:35:12 26 4
gpt4 key购买 nike

我使用 truncatedSVD 和 30000 x 40000 大小的术语文档矩阵来将维度减少到 3000 维度,
使用“随机化”时,方差比约为 0.5 (n_iter=10)
使用 'arpack' 时,方差比约为 0.9

“随机化”算法的方差比低于“arpack”之一。

那么为什么 scikit-learn truncatedSVD 使用“随机化”算法作为默认值?

最佳答案

速度!

根据docs , sklearn.decomposition.TruncatedSVD由于 Halko, Martinson, and Tropp (2009). 可以使用随机算法这篇论文声称他们的算法要快得多。

对于密集矩阵,它的运行时间为 O(m*n*log(k)),而经典算法需要 O(m*n*k) 的时间,其中 m 和 n 是您想要的矩阵的维度第 k 个最大的组件。随机化算法也更容易有效地并行化,并减少对数据的传递。

论文的表 7.1(第 45 页)显示了一些算法的性能作为矩阵大小和组件数量的函数,随机算法通常快一个数量级。

输出的准确性也声称非常好(图 7.5),尽管有一些修改和常量可能会影响它,而且我还没有浏览 sklearn 代码来查看他们做了/没有做什么。

关于scikit-learn - 为什么 scikit-learn truncatedSVD 默认使用 'randomized' 算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36812129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com