В отличие от случайных лесов, деревья с градиентным усилением могут перенасыщаться. Поэтому, как и для нейронных сетей, вы можете применить регуляризацию и раннюю остановку, используя набор данных проверки.
Например, на следующих рисунках показаны кривые потерь и точности для обучающих и проверочных наборов при обучении модели GBT. Обратите внимание, насколько расходятся кривые, что предполагает высокую степень переобучения.
Рисунок 29. Потери в зависимости от количества деревьев решений.
Рисунок 30. Точность в зависимости от количества деревьев решений.
Общие параметры регуляризации для деревьев с градиентным усилением включают:
- Максимальная глубина дерева.
- Скорость усадки.
- Соотношение атрибутов, проверенных на каждом узле.
- Коэффициенты L1 и L2 на потери.
Обратите внимание, что деревья решений обычно растут намного мельче, чем модели случайного леса. По умолчанию деревья с градиентным усилением в TF-DF выращиваются до глубины 6. Поскольку деревья неглубокие, минимальное количество примеров на лист мало влияет и, как правило, не настраивается.
Необходимость в наборе данных для проверки является проблемой, когда количество обучающих примеров невелико. Поэтому принято обучать деревья с градиентным усилением внутри цикла перекрестной проверки или отключать раннюю остановку, когда известно, что модель не переобучается.
Пример использования
В предыдущей главе мы обучили случайный лес на небольшом наборе данных. В этом примере мы просто заменим модель случайного леса моделью деревьев с градиентным усилением:
model = tfdf.keras.GradientBoostedTreesModel()
# Part of the training dataset will be used as validation (and removed
# from training).
model.fit(tf_train_dataset)
# The user provides the validation dataset.
model.fit(tf_train_dataset, validation_data=tf_valid_dataset)
# Disable early stopping and the validation dataset. All the examples are
# used for training.
model.fit(
tf_train_dataset,
validation_ratio=0.0,
early_stopping="NONE")
# Note: When "validation_ratio=0", early stopping is automatically disabled,
# so early_stopping="NONE" is redundant here.
Использование и ограничения
У деревьев с градиентным усилением есть свои плюсы и минусы.
Плюсы
- Как и деревья решений, они изначально поддерживают числовые и категориальные функции и часто не требуют предварительной обработки функций.
- Деревья, усиленные градиентом, имеют гиперпараметры по умолчанию, которые часто дают отличные результаты. Тем не менее, настройка этих гиперпараметров может значительно улучшить модель.
- Модели деревьев с градиентным усилением, как правило, небольшие (по количеству узлов и памяти) и быстро запускаются (часто всего один или несколько мкс/примеров).
Минусы
- Деревья решений должны обучаться последовательно, что может значительно замедлить обучение. Однако замедление обучения несколько компенсируется тем, что деревья решений меньше.
- Как и случайные леса, деревья с градиентным усилением не могут изучать и повторно использовать внутренние представления. Каждое дерево решений (и каждая ветвь каждого дерева решений) должно повторно изучить шаблон набора данных. В некоторых наборах данных, особенно наборах данных с неструктурированными данными (например, изображениями, текстом), это приводит к тому, что деревья с градиентным усилением показывают худшие результаты, чем другие методы.