【问题标题】:Merging Tree Models from two random forest models into one random forest model at H2O in R将两个随机森林模型中的树模型合并为 R 中 H2O 的一个随机森林模型
【发布时间】:2018-09-26 17:28:25
【问题描述】:

我对机器学习海洋比较陌生,如果我的一些问题真的很基础,请原谅。

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

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

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

(3) 将树木重新合并在一起,对原始森林进行改造,并将测量结果取平均值。

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

问题:

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

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

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

【问题讨论】:

    标签: r machine-learning parallel-processing h2o


    【解决方案1】:

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

    您基本上是在做 Random Forest 自己做的事情,即种植 X 棵独立的树,然后对投票进行平均。许多软件包提供了一个选项来指定内核或线程的数量,以便利用 RF 的这一特性。

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

    【讨论】:

    • 这其实是我后来才知道的,谢谢解答!
    【解决方案2】:

    10,000 行 x 1,000 列并不算太大,训练 RF 模型应该不会花那么长时间。

    听起来好像发生了一些意想不到的事情。

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

    【讨论】:

    • 我的道歉,实际上是80000+和2000+字段,我会更新我的答案。
    猜你喜欢
    • 2020-02-25
    • 2017-08-11
    • 2022-11-11
    • 2019-07-10
    • 2016-04-09
    • 2015-12-23
    • 2019-11-22
    • 2019-08-02
    • 2019-05-04
    相关资源
    最近更新 更多