r - 在 R 中的 H2O 中将两个随机森林模型中的树模型合并为一个随机森林模型

标签 r machine-learning parallel-processing h2o

我对机器学习领域比较陌生,如果我的一些问题确实很基本,请原谅。

当前情况:总体目标是尝试改进在 super 计算机集群上运行的 r 中的 h2o 包的一些代码。但由于数据量太大,单个节点用 h2o 确实需要一天多的时间,因此,我们决定使用多个节点来运行模型。我想出了一个主意:

(1) 分配每个节点构建(nTree/num_node)棵树并保存到模型中;

(2) 在集群的每个节点上运行森林中的 (nTree/num_node) 棵树;

(3)将树木重新合并并改造原始森林,并取测量结果的平均值。

我后来意识到这可能有风险。但我找不到实际的支持或反对声明,因为我不是专注于机器学习的程序员。

问题:

  1. 如果这种处理随机森林的方式会导致一些风险,请引用我的链接,以便我可以基本了解为什么这是不正确的。
  2. 如果这种方式实际上是一种“好的”方式。我应该怎么做才能合并树,有没有可以借用的包或方法?
  3. 如果这确实是一个已解决的问题,请引用我的链接,我可能搜索了错误的关键字,谢谢!

我可以在这里展示的实际涉及数字的示例是:

我有一个包含 80k 行和 2k 列的随机森林任务,并且希望树的数量为 64 棵。我所做的是将 16 棵树放在与整个数据集一起运行的每个节点上,并且四个节点中的每一个都会得出射频模型。我现在正在尝试将每个模型中的树合并到这个大型 RF 模型中,并对测量值进行平均(来自这四个模型中的每一个)。

最佳答案

无需合并模型。与提升方法不同,随机森林中的每棵树都是独立生长的(只是在每个节点上启动 RF 之前不要设置相同的种子!)。

你基本上是在做随机森林本身所做的事情,即生长X个独立的树,然后对投票进行平均。许多软件包提供了一个选项来指定核心或线程的数量,以便利用 RF 的这一功能。

在你的例子中,由于每个节点有相同数量的树,你将得到 4 个“模型”,但这些实际上只是 16 棵树的集合。要使用它,我只需将 4 个模型分开,当您需要预测时,对 4 个模型中每个模型的预测进行平均。假设您要多次执行此操作,您可以编写一个小型包装函数来使用 4 个模型进行预测并对输出求平均值。

关于r - 在 R 中的 H2O 中将两个随机森林模型中的树模型合并为一个随机森林模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49866372/

相关文章:

r - 在包装器中将参数传递给 ggplot

基于r-base docker镜像docker build时Python包安装问题

javascript - javascript 是 "truly parallel"吗?

r - 交错存储在 R 中的列表中的矩阵行

r - 在 data.table 对象中显示行名称

machine-learning - CNN中每个卷积层之后产生的特征图的数量

c - 并行应用程序具有随机行为

c++ - 如何通过循环将 OpenMP 线程拆分为子团队

machine-learning - 异常: The passed model is not callable and cannot be analyzed directly with the given masker

python - CountVectorizer max_features 如何处理具有相同频率的 ngram?