Что делает шаг обрезки XGBoost?

Когда я использую XGBoost, чтобы соответствовать модели, он обычно показывает список сообщений, таких как "updater_prune.cc:74: конец сокращения дерева, 1 корень, 6 дополнительных узлов, 0 сокращенных узлов, max_depth=5". Интересно, как XGBoost выполняет обрезку деревьев? Я не могу найти описание их процесса обрезки в их статье.

Примечание: я понимаю процесс сокращения дерева решений, например, до и после. Здесь меня интересует фактический процесс обрезки XGBoost. Обычно для обрезки требуются данные проверки, но XGBoost выполняет обрезку, даже если я не даю ему никаких данных проверки.

1 ответ

XGBoostвыращивает все деревья max_depth первый.

Это позволяет быстро обучаться, так как вам не нужно оценивать все параметры регуляризации на каждом узле.

После того, как каждое дерево выросло доmax_depth Вы идете от нижней части дерева (рекурсивно до самого верха) и определяете, действительны лиsplit и дочерние элементы на основе выбранных вами гиперпараметров. Если разделение или узлы недопустимы, они удаляются из дерева.

в model dump из XGBoostмодель, которую вы можете наблюдать, фактическая глубина будет меньше, чемmax_depth во время тренировки,если произошло обрезка.

Обрезка не требует проверки данных. Он задает только простой вопрос о том, действительны ли разделенные или получающиеся дочерние узлы, основываясь на гиперпараметрах, которые вы установили во время обучения.

Другие вопросы по тегам