Kye*_*pil 3 dimension-reduction svd scikit-learn
我将术语文档矩阵的大小为30000 x 40000的truncatedSVD缩小为3000维,使用“随机化”时,使用“ arpack”时,方差比约为0.5(n_iter = 10),方差比约为0.9
“随机化”算法的方差比低于“ arpack”之一。
那么,为什么scikit-learn truncatedSVD默认使用“随机化”算法?
速度!
根据docs,sklearn.decomposition.TruncatedSVD由于Halko,Martinson和Tropp(2009)的缘故,可以使用随机算法。本文声称他们的算法要快得多。
对于密集矩阵,它以O(m * n * log(k))的时间运行,而经典算法需要O(m * n * k)的时间,其中m和n是您要从中获取矩阵的维数第k大组件。随机算法也更容易有效地并行化,并且对数据的传递较少。
本文的表7.1(第45页)显示了几种算法的性能与矩阵大小和组件数量的关系,而随机算法通常快一个数量级。
尽管有一些修改和常量可能会影响输出的准确性,但据称输出的准确性也很好(图7.5),而且我还没有通过sklearn代码来查看它们做了/没做过的事情。
| 归档时间: |
|
| 查看次数: |
844 次 |
| 最近记录: |