gpt4 book ai didi

r - 计算R中前两个主成分的最快方法是什么?

转载 作者:行者123 更新时间:2023-12-03 13:54:24 25 4
gpt4 key购买 nike

我在R中使用princomp执行PCA。我的数据矩阵很大(10K x 10K,每个值最多4个小数点)。在Xeon 2.27 GHz处理器上需要约3.5个小时和约6.5 GB的物理内存。

由于我只想要前两个组件,因此有没有更快的方法?

更新:

除了速度之外,还有没有一种内存有效的方法可以做到这一点?

使用svd(,2,)来计算前两个组件大约需要2个小时和6.3 GB的物理内存。

最佳答案

有时您可以使用所谓的“经济”分解,从而可以限制特征值/特征向量的数量。看起来eigen()prcomp()不提供此功能,但是svd()允许您指定要计算的最大数量。

在小型矩阵上,增益似乎不大:

R> set.seed(42); N <- 10; M <- matrix(rnorm(N*N), N, N)
R> library(rbenchmark)
R> benchmark(eigen(M), svd(M,2,0), prcomp(M), princomp(M), order="relative")
test replications elapsed relative user.self sys.self user.child
2 svd(M, 2, 0) 100 0.021 1.00000 0.02 0 0
3 prcomp(M) 100 0.043 2.04762 0.04 0 0
1 eigen(M) 100 0.050 2.38095 0.05 0 0
4 princomp(M) 100 0.065 3.09524 0.06 0 0
R>


但是从 princomp()重构 princomp()时,相对于 svd()的3倍可能值得,因为 svd()允许您在两个值之后停止。

关于r - 计算R中前两个主成分的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8299460/

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