【问题标题】:Visualize H2o XGBoost tree in json format, can not find the missing child以 json 格式可视化 H2o XGBoost 树,找不到丢失的孩子
【发布时间】:2021-02-15 13:45:33
【问题描述】:

我正在尝试使用以下命令以 JSON 格式可视化我的 H2O XGBoost 模型: java -cp h2o-genmodel.jar hex.genmodel.tools.PrintMojo -i XGBoost_model_R_1597776279050_3.zip --tree 1 --format json

上述命令以 JSON 格式输出树形结构,如下所示:

"rightChild": {
      "nodeNumber": 2,
      "weight": 0.0,
      "colId": 382,
      "colName": "var_2",
      "leftward": false,
      "isCategorical": false,
      "inclusiveNa": false,
      "splitValue": 0.195,
      "rightChild": {
        "nodeNumber": 6,
        "weight": 0.0,
        "colId": 340,
        "colName": "var_6",
        "leftward": false,
        "isCategorical": false,
        "inclusiveNa": true,
        "splitValue": 1.0,
        "rightChild": {
          "nodeNumber": 10,
          "weight": 0.0,
          "predValue": 0.011794609
        },
        "leftChild": {
          "nodeNumber": 9,
          "weight": 0.0,
          "predValue": 0.011531689
        }

我试图了解如何使用上述 JSON 为每个节点计算丢失的孩子。可以以 png 格式查看相同的结构,并且节点 var_6 的缺失节点作为左子节点出现。有没有办法通过查看 JSON 来找出丢失的节点?

【问题讨论】:

    标签: xgboost h2o


    【解决方案1】:

    签出leftward属性 - 它是所谓的“大多数方式”,这意味着无法明确评估的所有数据记录(例如,缺少值的数据记录)将在那里发送。

    在当前情况下,"leftward": false应该导致缺失值发送到右子节点(节点号10)。

    【讨论】:

    • 在我的模型中(xgboost),所有节点都向左作为false。这是否意味着缺失值,它总是进入右键?我做了一些测试来打印树路径,我观察到不是这种情况。我想知道包含的人是否与缺少节点有关。 span>
    • 您应该以两种方式生成JSON打印输出 - 首先使用H2O工具,然后使用XGBoost自己的工具。也许后者将更具信息丰富/更容易解释。现在,您的XGBoost模型根据H2O决策树模型“标准”格式化;也许这个表示缺少一些重要信息。 span>
    • 我能够使用graphviz和dot格式来查看缺失的节点,我认为JSON格式打印Mojo不会正确地显示有两个终端节点的节点的缺失节点。 span>
    猜你喜欢
    • 2019-03-03
    • 2019-11-18
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多