在R中使用H2O将两个随机森林模型的树模型合并成一个随机森林模型

我对机器学习领域还比较陌生,请原谅我提出的一些问题可能非常基础。

当前情况:总体目标是试图改进在超级计算机集群上运行的R语言中h2o包的一些代码。然而,由于数据量过大,单个节点使用h2o需要超过一天的时间,因此我们决定使用多个节点来运行模型。我想到了一个主意:

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

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

(3)将树合并回原来的森林,并使用平均的测量结果。

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

问题:

  1. 如果这种处理随机森林的方式会带来一些风险,请提供链接让我了解为什么这样做是不对的。
  2. 如果这种方式实际上是可以接受的,我应该如何合并这些树,有没有可以借用的包或方法?
  3. 如果这实际上是一个已解决的问题,请提供链接,我可能搜索了错误的关键词,谢谢你!

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

我有一个随机森林任务,数据有8万行和2千列,希望树的数量为64。我所做的是在每个节点上运行整个数据集,并在每个节点上放置16棵树,四个节点各自生成一个RF模型。我现在正试图将每个模型中的树合并成一个大的RF模型,并平均来自这四个模型的测量结果。


回答:

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

你基本上是在做随机森林本身会做的事情,即生长X棵独立的树,然后平均投票结果。许多软件包提供了指定核心数或线程数的选项,以便利用RF的这一特性。

在你的情况下,由于每个节点的树数量相同,你会得到4个“模型”,但这些实际上只是16棵树的集合。要使用它们,我建议你保持这4个模型分开,当你需要预测时,平均来自这4个模型的预测。假设你会多次这样做,你可以编写一个小的包装函数来使用4个模型进行预测并平均输出结果。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注