В отличие от случайных лесов, деревья с усиленным градиентом могут переобуваться. Поэтому, что касается нейронных сетей, вы можете применить регуляризацию и раннюю остановку, используя набор данных проверки.
Например, на следующих рисунках показаны кривые потерь и точности для обучающих и проверочных наборов при обучении модели 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.
Использование и ограничения
Деревья с градиентным усилением имеют свои плюсы и минусы.
Плюсы
- Как и деревья решений, они изначально поддерживают числовые и категориальные признаки и часто не требуют предварительной обработки признаков.
- Деревья с градиентным усилением имеют гиперпараметры по умолчанию, которые часто дают отличные результаты. Тем не менее настройка этих гиперпараметров может значительно улучшить модель.
- Модели деревьев с градиентным усилением обычно небольшие (по количеству узлов и памяти) и быстро выполняются (часто всего одна или несколько мкс/примеры).
Минусы
- Деревья решений необходимо обучать последовательно, что может значительно замедлить обучение. Однако замедление обучения несколько компенсируется меньшими размерами деревьев решений.
- Как и случайные леса, деревья с градиентным усилением не могут обучаться и повторно использовать внутренние представления. Каждое дерево решений (и каждая ветвь каждого дерева решений) должно заново изучить шаблон набора данных. В некоторых наборах данных, особенно в наборах данных с неструктурированными данными (например, изображениями, текстом), это приводит к тому, что деревья с градиентным усилением показывают худшие результаты, чем другие методы.