首页 文章

h2o GBM:叶预测

提问于
浏览
1

我正在为h2o中的GBM执行gridsearch,以获得具有连续预测变量的连续结果 . 我正在使用交叉验证进行训练,然后在测试集上进行预测 .

我正在使用.predict_leaf_node_assignment函数:

best_gbm.predict_leaf_node_assignment(test_frame_h2o)(其中best_gbm是我从gridsearch获得的最好的gbm模型)

并获取下表,我们可以看到每个树T1,T2,T3等的叶节点分配 .

table

问题1:

如何获得下表中每片叶子的T1,T2,T3等值,而不是叶子的位置?

问题2:

如果有办法获得T1,T2,T3等的值,它们实际上反映了什么? T1是第一个预测然后T2,T3,T4是校正吗?或T1是预测,然后T2是T1校正等?

谢谢 .

Edit: 我尝试在python中下载mojo,如本页所述,以便我可以查看不同的树 . http://docs.h2o.ai/h2o/latest-stable/h2o-docs/productionizing.html?highlight=mojo

在“步骤2:编译并运行MOJO”中,此步骤的第2部分仅在R中给出:“通过创建名为main.java的新文件在实验文件夹中创建主程序(例如,使用”vim main“ . java“) . 包含以下内容 . 请注意,此文件引用上面使用R创建的GBM模型 . ”

我可以在python中这样做吗?我试图在jupyter笔记本中复制例如命令“import java.io. *”,但它抛出一个错误(ModuleNotFoundError:没有名为'java'的模块) .

1 回答

  • 0

    T1,T2,... TN对应于第一棵树,第二棵树,....你建造的最后一棵树 . (所以如果你说 ntrees =50 你应该看到T1 - T50) . 如果您正在进行多类分类问题,您会看到每个树都附加了类,例如T1.C1 T1.C2(其中C1是第一类) .

    在您发布的图片中,您似乎传递了一个包含10行或更多行的H2OFrame . 尝试查看单行,您将看到返回单行框架 - 因为 predict_leaf_node_assignment 为您提供了一行到达每个树的最终叶节点(也称为终端节点)的路径 .

    以你的T1(第一棵树)为例,在你传递的帧中的第一行 . 我们看到路径是RRR,这意味着该行在每次拆分时都是漏洞 .

    Question 1 :如果要求数据中给定行的T1实际预测值需要下载mojo并使用mojo对该行进行评分(这必须使用Java完成) . 请注意,该树的预测值实际上将位于链接空间中,您需要使用相应的反向链接函数来获取原始响应值 . 使用的链接功能将在mojo中指定 .

    (响应你的 EDIT :不,你不能把示例代码(这是Java)并将其粘贴到一个jupyter笔记本中因为代码是java而不是python - 演练假设你的机器上有java(1.7或更高版本)并且期望您可以从终端或命令提示符运行代码 .

相关问题