XGBoost 修剪步骤在做什么?

Div*_*oML 3 decision-tree pruning xgboost

当我使用 XGBoost 拟合模型时,它通常会显示一系列消息,例如“updater_prune.cc:74: tree pruning end, 1 个 root, 6 extra nodes, 0 pruned nodes, max_depth=5”。我想知道 XGBoost 是如何进行树修剪的?我在他们的论文中找不到关于他们修剪过程的描述。

注意:我确实了解决策树修剪过程,例如预修剪和后修剪。这里我很好奇XGBoost的实际剪枝过程。通常修剪需要验证数据,但即使我没有给它任何验证数据,XGBoost 也会执行修剪。

T. *_*arf 5

XGBoost将所有树木种植到max_depth第一个。

这允许快速训练,因为您不必评估每个节点的所有正则化参数。

每棵树长到 之后max_depth,您从底部(递归地一直走到顶部)并根据您选择的超参数确定拆分和子节点是否有效。如果拆分或节点无效,则将它们从树中删除。

model dump一个的XGBoost模型,你可以观察到的实际深度将小于在max_depth训练期间,如果发生了修剪。

修剪不需要验证数据。 它只是根据在训练期间设置超参数询问一个简单的问题,即拆分或生成的子节点是否有效