Что делает шаг обрезки 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
во время тренировки,если произошло обрезка.
Обрезка не требует проверки данных. Он задает только простой вопрос о том, действительны ли разделенные или получающиеся дочерние узлы, основываясь на гиперпараметрах, которые вы установили во время обучения.