0

regsubsets「徹底的な」方法を使用して、leaps パッケージから実行するために Rstudio サーバーでマルチコアの使用を実装できるように、コードを書き直すにはどうすればよいですか? データには 1200 個の変数と 9000 個の obs があるため、コードはここで短縮されています。

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

私たちのサーバーはクアッド コアの 7.5 GB RAM ですが、このような計算には十分でしょうか?

4

1 に答える 1

0

2 番目の質問については、試してみてください。一般に、1200 倍の 9000 データセットはそれほど大きくありませんが、それが機能するかどうかは、内部で何regsubsetsが行われているかによっても異なります。

一般に、ここでのアプローチは、問題を細かく分割し、それぞれの部分を 1 つのコア (この場合は 4 コア) で実行することです。並列化は、コアで実行するプロセスに時間がかかる場合 (たとえば 10 分) に最も効果的です。時間がかからない場合、並列化のオーバーヘッドは、全体の分析にかかる時間を増やすだけです。サーバー上にクラスターを作成するのは、たとえばSNOW(CRAN で入手可能) を使用して非常に簡単です。私がよく使用するアプローチは、doSNOWパッケージを使用してクラスターを作成し、パッケージの関数を使用することplyrです。私が最近書いたブログ投稿では、いくつかの背景とサンプル コードを提供しています。

特定のケースregsubsetsで、すぐに使用できる並列化をサポートしていない場合は、自分でコーディングを行う必要があります。などの変数選択方法でregsubsetsは、データセット全体を使用する必要があると思います。そのため、複数の regsubsets を並行して実行して並列化を解決することは現実的ではないと思います。したがって、関数を調整して並列化を含める必要があると思います。関数内のどこかで、さまざまな変数の選択が評価され、そこでそれらの評価をさまざまなコアに送信できます。このような評価にほとんど時間がかからない場合、並列化のオーバーヘッドによって分析が遅くなるだけであることに注意してください。その場合、各ノードで費やされる時間を増やし、並列化によるオーバーヘッドの量を減らすために、評価のグループを各コアに送信する必要があります。

于 2011-12-29T08:10:53.587 に答える