0

我将如何重写我的代码,以便我可以在 Rstudio 服务器上实现多核的使用,以regsubsets使用“穷举”方法从跨越包运行?数据有 1200 个变量和 9000 个 obs,所以这里的代码被缩短了:

model<-regsubsets(price~x + y + z + a + b +  ...., data=sample,
                  nvmax=500,  method=c("exhaustive"))

我们的服务器是一个四核 7.5 GB 内存,对于这样的等式是否足够?

4

1 回答 1

0

关于你的第二个问题,我想说:试试看。一般来说,一个 1200 乘以 9000 的数据集并不是特别大,但它是否有效也取决于regsubsets引擎盖下的内容。

一般来说,这里的方法是将问题分成几部分,然后在一个核心上运行每个部分,在你的情况下是 4 个核心。如果我们在内核上运行的进程需要一些时间(例如 10 分钟),则并行化最有效。如果只需要很少的时间,并行化的开销只会增加总分析所需的时间。SNOW使用例如(在 CRAN 上可用)在您的服务器上创建集群非常容易。我经常使用的方法是使用包创建一个集群doSNOW,然后使用plyr包中的功能。我最近写的一篇博文提供了一些背景和示例代码。

在您的特定情况下,如果regsubsets不支持开箱即用的并行化,则您必须自己进行一些编码。我认为诸如regsubsets需要使用整个数据集的变量选择方法,因此我认为通过并行运行多个 regsubset 来解决并行化是不可行的。所以我认为你必须调整函数以包含并行化。在函数内部的某处评估不同的变量选择,您可以将这些评估发送到不同的核心。请注意,如果这样的评估只需要很少的时间,并行化开销只会减慢您的分析速度。在这种情况下,您需要向每个核心发送一组评估,以增加在每个节点上花费的时间,从而减少并行化的开销。

于 2011-12-29T08:10:53.587 回答