【问题标题】:what parallel algorithms exist in R, working on large dataR中存在哪些并行算法,处理大数据
【发布时间】:2012-11-14 05:26:56
【问题描述】:

我正在尝试找出 CRAN/github/R-Forge 上的 R 或 R 包中的哪些统计/数据挖掘算法可以在 1 台服务器上并行或按顺序处理大型数据集,而不会遇到问题。内存问题或同时在多台机器上工作。 这是为了评估我是否可以轻松地将它们移植到 ff/ffbase 中,例如 ffbase::bigglm.ffdf。

我想把这些分成三部分:

  1. 并行更新或处理参数估计的算法

  2. 按顺序工作的算法(在 R 中获取数据但仅使用 1 个进程且仅 1 个进程更新参数)

  3. 处理部分数据

我想排除简单的并行化,例如通过例如优化超参数交叉验证。 任何其他指向这些模型/优化器或算法的指针?也许是贝叶斯?也许是一个名为 RGraphlab (http://graphlab.org/) 的包?

【问题讨论】:

标签: algorithm r memory machine-learning bigdata


【解决方案1】:

您是否阅读过 CRAN 上的 High Performance Computing 任务视图?

它涵盖了您提到的许多要点,并概述了这些领域的软件包。

【讨论】:

  • 是的,我有,但我的印象是,它更侧重于并行化多个内核上的超参数优化,而不是并行化算法本身。我更多的是寻找在相同参数估计上并行工作的算法。
  • @jwijffels,我希望任务视图的维护者会欣赏您学到的任何新知识并将其添加到任务视图中。
  • 好的,会的。有关信息:我更多地在 R pages.cs.wisc.edu/~brecht/papers/hogwildTR.pdf 中寻找这类东西,但不一定与协同过滤相关,但也与其他算法相关。
【解决方案2】:

随机森林很容易并行运行。这是foreach vignette 中的示例之一:

x <- matrix(runif(500), 100)
y <- gl(2, 50)
library(randomForest); library(foreach)
rf <- foreach(ntree=rep(250, 4), .combine=combine,
.packages='randomForest') %dopar% randomForest(x, y, ntree=ntree)

您可以使用此构造在集群中的每个核心上分割您的森林。

【讨论】:

  • 谢谢。很好的例子。我不知道 randomForest 包中的 combine 函数。 Randomforest 确实非常适合这个。对我来说,这是“并行更新或处理参数估计的算法”。还有其他建议吗?
  • DEoptim 也可以并行运行,因为它是一个通用的优化器,可以用于多种算法。
猜你喜欢
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2017-09-24
相关资源
最近更新 更多