在R中的H2O中,将两个随机森林模型的决策树合并成一个随机森林模型。

5

我对机器学习还比较新,如果我的问题有些基础,请原谅。

现状:我们的目标是改进在超级计算机集群上运行的r中h2o包的一些代码。但是,由于数据太大了,单个节点使用h2o需要超过一天的时间,因此,我们决定使用多个节点来运行模型。我想到了一个方法:

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

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

(3) 将树合并在一起重新形成原始森林,并使用平均测量结果。

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

问题:

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

我可以在这里提供实际涉及数字的例子:

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

2个回答

5
不需要合并模型。与提升方法不同的是,随机森林中的每棵树都是独立生成的(只要不在每个节点上启动RF之前设置相同的种子!)。
你基本上正在做随机森林自己会做的事情,即生成X个独立的树,然后对投票结果进行平均。许多程序包提供了指定核心或线程数的选项,以利用RF的这一特性。
在你的情况下,因为每个节点有相同数量的树,你将得到4个“模型”,但其实那些只是16棵树的集合。要使用它,我建议保持4个模型单独,并且在需要预测时,从每个模型中平均预测值。假设你将多次进行这样的操作,你可以编写一个小的包装函数来使用4个模型进行预测并平均输出。

1
那其实是我后来发现的,谢谢你的答案! - windsound

1

1万行乘以1千列并不算太大,训练随机森林模型也不应该花费太长时间。

听起来好像出现了一些意外情况。

如果你知道如何操作,可以尝试对模型进行平均处理,但我认为在这种情况下并不必要。


抱歉,实际上是80000多个和2000多个字段,我会更新我的回答。 - windsound

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接