将两个随机森林模型中的树模型合并到一个随机森林模型中的 H2O in R

Merging Tree Models from two random forest models into one random forest model at H2O in R

我是机器学习海洋的新手,如果我的一些问题真的很基础,请原谅。

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

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

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

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

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

问题:

  1. 如果这种处理随机森林的方式会导致一些风险,请参考我 link 这样我就可以基本了解为什么这是不对的。
  2. 如果这种方式实际上是 "ok" 这样做的方式。合并树应该怎么做,有没有可以借鉴的包或者方法?
  3. 如果这确实是一个解决的问题,请参考我link,我可能搜索了错误的关键字,谢谢!

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

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

10,000 行 x 1,000 列并不过分,训练 RF 模型不需要那么长时间。

听起来好像有什么意外发生。

如果您知道自己在做什么,可以尝试对模型进行平均,但我认为在这种情况下没有必要这样做。

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

你基本上是在做随机森林自己做的事情,即生长 X 个独立的树,然后对选票进行平均。许多包提供了一个选项来指定内核或线程的数量,以利用 RF 的这一特性。

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