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

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

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


person DiveIntoML    schedule 05.10.2018    source источник


Ответы (1)


XGBoost сначала увеличивает все деревья до max_depth.

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

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

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

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

person T. Scharf    schedule 05.10.2018
comment
Судя по слайдам в вашем ответе, я думаю, что вы в основном правы. Тем не менее, я считаю, что правильный ответ (как на слайдах) состоит в том, чтобы отсечь узлы, разделение которых приводит к отрицательному выигрышу из-за регуляризации, вместо недействительных узлов. Как вы думаете, если количество выборок узла уже меньше, чем его значение в гиперпараметре, он все равно будет разделен до достижения max_depth? - person DiveIntoML; 08.10.2018
comment
Да, деревья всегда сначала выращивают на максимальную глубину, а затем обрезают. Как вы заметили, вы можете наблюдать это по комментариям с включенным подробным флагом во время обучения. - person T. Scharf; 08.10.2018