当我使用XGBoost拟合模型时,它通常显示消息列表,例如“ updater_prune.cc:74:树修剪结束,1个根,6个额外节点,0个修剪节点,max_depth = 5”。我想知道XGBoost如何执行树修剪吗?我找不到有关其修剪过程in their paper的描述。
注意:我确实了解决策树修剪过程,例如修剪前和修剪后。在这里,我对XGBoost的实际修剪过程感到好奇。通常,修剪需要验证数据,但是即使我没有提供任何验证数据,XGBoost也会执行修剪。
答案 0 :(得分:2)
XGBoost
首先将所有树木生长到max_depth
。
由于您不必评估每个节点上的所有正则化参数,因此可以进行快速培训。
每棵树长到max_depth
后,您从树的底部步行(递归一直到顶部),并确定是否根据您选择的超参数,分割和子项有效。如果拆分或节点无效,则将其从树中删除。
在model dump
模型的XGBoost
中,您可以观察到如果进行修剪,则在训练期间,实际深度将小于max_depth
。 >
修剪不需要验证数据。只是问一个简单的问题,基于{{3} }。