Я пытался поместить изображение дерева, но моей репутации было недостаточно ...
Во всяком случае, в XGBoost я проверял дерево, чтобы интерпретировать модель.Кстати, метка конечного узла означает сырой счет.Я хочу видеть вероятность предсказания в дереве.Например, если значение конечного узла равно 0,0856821, то требуемое значение равно 1 / (1 + exp (-1 * 0,0856821).
Есть ли способ изменить метку конечного узла?
to_graphviz(model, num_trees=99)
В одну сторонуЯ думаю, что дамп модели xgboost в формате json. Затем измените значение в json. Наконец, измените формат json на точечный формат с помощью graphviz. Проблема в том, что я не знаю, как изменить формат json на точечный формат. Ниже приведен пример, нона самом деле дерево глубокое и более сложное.
До:
{ "nodeid": 0, "depth": 0, "split": "f0", "split_condition": 5.03515, "yes": 1, "no": 2, "missing": 1, "children": [
{ "nodeid": 1, "depth": 1, "split": "f0", "split_condition": 3.0743, "yes": 3, "no": 4, "missing": 3, "children": [
{ "nodeid": 3, "leaf": 0.0856821 },
{ "nodeid": 4, "leaf": 0.158854 }
]
},
{ "nodeid": 2, "depth": 1, "split": "f0", "split_condition": 6.81955, "yes": 5, "no": 6, "missing": 5, "children": [
{ "nodeid": 5, "leaf": 0.240472 },
{ "nodeid": 6, "leaf": 0.371366 }
]
}
]
}
После:
{ "nodeid": 0, "depth": 0, "split": "f0", "split_condition": 5.03515, "yes": 1, "no": 2, "missing": 1, "children": [
{ "nodeid": 1, "depth": 1, "split": "f0", "split_condition": 3.0743, "yes": 3, "no": 4, "missing": 3, "children": [
{ "nodeid": 3, "leaf": 0.5214074298536938 },
{ "nodeid": 4, "leaf": 0.5396301973693495 }
]
},
{ "nodeid": 2, "depth": 1, "split": "f0", "split_condition": 6.81955, "yes": 5, "no": 6, "missing": 5, "children": [
{ "nodeid": 5, "leaf": 0.5598299629669533 },
{ "nodeid": 6, "leaf": 0.5917890109082163 }
]
}
]
}
Желаемый результат:
digraph {
graph [rankdir=UT]
0 [label="f0<5.03515"]
0 -> 1 [label="yes, missing" color="#0000FF"]
0 -> 2 [label="no" color="#FF0000"]
1 [label="f0<3.0743"]
1 -> 3 [label="yes, missing" color="#0000FF"]
1 -> 4 [label="no" color="#FF0000"]
3 [label="leaf=0.5214074298536938"]
4 [label="leaf=0.5396301973693495"]
2 [label="f0<6.81955"]
2 -> 5 [label="yes, missing" color="#0000FF"]
2 -> 6 [label="no" color="#FF0000"]
5 [label="leaf=0.5598299629669533"]
6 [label="leaf=0.5917890109082163"]
}