我对机器学习领域比较陌生,如果我的一些问题确实很基本,请原谅。
当前情况:总体目标是尝试改进在 super 计算机集群上运行的 r 中的 h2o 包的一些代码。但由于数据量太大,单个节点用 h2o 确实需要一天多的时间,因此,我们决定使用多个节点来运行模型。我想出了一个主意:
(1) 分配每个节点构建(nTree/num_node)棵树并保存到模型中;
(2) 在集群的每个节点上运行森林中的 (nTree/num_node) 棵树;
(3)将树木重新合并并改造原始森林,并取测量结果的平均值。
我后来意识到这可能有风险。但我找不到实际的支持或反对声明,因为我不是专注于机器学习的程序员。
问题:
- 如果这种处理随机森林的方式会导致一些风险,请引用我的链接,以便我可以基本了解为什么这是不正确的。
- 如果这种方式实际上是一种“好的”方式。我应该怎么做才能合并树,有没有可以借用的包或方法?
- 如果这确实是一个已解决的问题,请引用我的链接,我可能搜索了错误的关键字,谢谢!
我可以在这里展示的实际涉及数字的示例是:
我有一个包含 80k 行和 2k 列的随机森林任务,并且希望树的数量为 64 棵。我所做的是将 16 棵树放在与整个数据集一起运行的每个节点上,并且四个节点中的每一个都会得出射频模型。我现在正在尝试将每个模型中的树合并到这个大型 RF 模型中,并对测量值进行平均(来自这四个模型中的每一个)。
最佳答案
无需合并模型。与提升方法不同,随机森林中的每棵树都是独立生长的(只是在每个节点上启动 RF 之前不要设置相同的种子!)。
你基本上是在做随机森林本身所做的事情,即生长X个独立的树,然后对投票进行平均。许多软件包提供了一个选项来指定核心或线程的数量,以便利用 RF 的这一功能。
在你的例子中,由于每个节点有相同数量的树,你将得到 4 个“模型”,但这些实际上只是 16 棵树的集合。要使用它,我只需将 4 个模型分开,当您需要预测时,对 4 个模型中每个模型的预测进行平均。假设您要多次执行此操作,您可以编写一个小型包装函数来使用 4 个模型进行预测并对输出求平均值。
关于r - 在 R 中的 H2O 中将两个随机森林模型中的树模型合并为一个随机森林模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49866372/