Самые важные параметры LightGBM, что они делают и как их настроить
LightGBM — популярный фреймворк для повышения градиента. Обычно вы начинаете указывать следующие основные параметры:
objective
иmetric
для постановки задачиseed
для воспроизводимостиverbose
для отладкиnum_iterations
,learning_rate
иearly_stopping_round
для обучения
Но куда вы пойдете отсюда? LightGBM имеет более 100 параметров [2], которые можно настраивать. Кроме того, каждый параметр имеет один или несколько псевдонимов, из-за чего новичкам сложно получить четкое представление об основных параметрах.
Таким образом, в данной статье рассматриваются наиболее важные и часто используемые гиперпараметры LightGBM, которые перечислены ниже:
- Форма дерева —
num_leaves
иmax_depth
- Рост дерева —
min_data_in_leaf
иmin_gain_to_split
- Выборка данных —
bagging_fraction
,bagging_freq
иfeature_fraction
- Регуляризация —
lambda_l1
иlambda_l2
Далее значения по умолчанию взяты из документации [2], а рекомендуемые диапазоны для настройки гиперпараметров — из статьи [5] и книг [1] и [4].
Форма дерева
В отличие от XGBoost, LightGBM наращивает деревья решений по листам, а не по уровням. Вы можете использовать num_leaves
и max_depth
для управления размером одного дерева.
Параметр num_leaves
управляет максимальным количеством листьев в одном дереве [2].
- По умолчанию: 31
- Хорошая отправная точка для базовой линии: 16
- Диапазон настройки: (8, 256) с
num_leaves < 2^(max_depth)
[3]
Параметр max_depth
управляет максимальной глубиной модели дерева [2].
- По умолчанию: -1 (без ограничений)
- Хорошая отправная точка для базовой линии: по умолчанию
- Диапазон настройки: (3, 16)
Чем меньше деревья (маленькие num_leaves
и max_depth
), тем выше скорость обучения, но это также может снизить точность [3].
Поскольку num_leaves
влияет на рост дерева в LGBM больше, чем max_depth
[5], Морохаши [4] не обязательно рекомендует настраивать этот параметр и отклоняться от значения по умолчанию.
Рост дерева
Помимо глубины и количества листьев, вы можете указать, при каких условиях лист будет разделяться. Таким образом, вы можете указать, как будет расти дерево.
Параметр min_data_in_leaf
указывает минимальное количество точек данных в одном листе [2]. Если этот параметр слишком мал, модель будет соответствовать обучающим данным [2].
- По умолчанию: 20
- Хорошая отправная точка для базовой линии: по умолчанию
- Диапазон настройки: (5, 300), но зависит от размера набора данных. Сотни достаточно для большого набора данных [3]. Эмпирическое правило: чем больше набор данных, тем больше
min_data_in_leaf
.
Параметр min_gain_to_split
указывает минимальное усиление, которое лист должен иметь для выполнения разделения [2].
- По умолчанию: 0
- Хорошая отправная точка для базовой линии: по умолчанию
- Диапазон настройки: (0, 15)
Если вы ограничите рост дерева, увеличив параметр min_gain_to_split
, результирующие деревья меньшего размера приведут к более быстрому времени обучения, но это также может снизить точность [3].
Выборка данных
Выборка данных — это метод, который заставляет модель обобщать. Общая идея состоит в том, чтобы не передавать модели все данные на каждой итерации. Вместо этого модель будет видеть только часть обучающих данных на каждой итерации.
Бэгинг
На каждой bagging_freq
-й итерации LGBM будет случайным образом выбирать bagging_fraction * 100 %
данных для использования в следующих bagging_freq
итерациях [2]. Например, если bagging_fraction = 0.8
и bagging_freq = 2
, LGBM будет выбирать 80% обучающих данных каждую вторую итерацию перед обучением каждого дерева.
Этот прием можно использовать для ускорения обучения [2].
- По умолчанию:
bagging_fraction = 1.0
иbagging_freq = 0
(отключено) - Хорошая отправная точка для базовой линии:
bagging_fraction = 0.9
иbagging_freq = 1
- Диапазон настройки:
bagging_fraction
(0,5, 1)
Выборка подфункций
На каждой итерации LGBM будет случайным образом выбирать feature_fraction * 100 %
данных [2]. Например, если feature_fraction = 0.8
, LGBM выберет 80% признаков перед обучением каждого дерева.
- По умолчанию: 1
- Хорошая отправная точка для базовой линии: 0,9
- Диапазон настройки: (0,5, 1)
В то время как выборка подфункций также может использоваться для ускорения обучения, как бэггинг [2], она может помочь, если в функциях присутствует мультиколлинеарность [1].
Регуляризация
Вы можете применить методы регуляризации к своей модели машинного обучения, чтобы справиться с переоснащением. Как следует из названий параметров, параметр lambda_l1
используется для регуляризации L1, а параметр lambda_l2
— для регуляризации L2.
- Регуляризация L1 снижает абсолютные значения весов и, таким образом, устойчива к выбросам.
- Регуляризация L2 снижает сумму квадратов весов и, таким образом, чувствительна к выбросам.
Вы можете решить использовать только один из двух типов регуляризации или комбинировать их, если хотите.
Для обоих параметров значения параметров ведут себя одинаково:
- По умолчанию: 0 (отключено)
- Хорошая отправная точка для базовой линии: по умолчанию
- Диапазон настройки: (0,01, 100)
Краткое содержание
Эта статья дала вам краткий обзор наиболее важных гиперпараметров LightGBM, которые необходимо настроить. Ниже вы можете найти их обзор с рекомендуемыми диапазонами настройки.
Конечно, LightGBM имеет гораздо больше гиперпараметров, которые вы можете использовать.
Например, параметр min_sum_hessian_in_leaf
задает гессиан минимальной суммы в одном листе, а также может помочь при переобучении [2]. Существует также параметр scale_pos_weight
, который вы можете настроить, когда ваш набор данных несбалансирован. Или вы можете указать максимальное количество бинов, в которые объект будет помещен с помощью max_bin
.
Рекомендации
[1] К. Банашевич, Л. Массарон (2022). Книга Каггл. Пакет
[2] LightGBM (2023). Параметры (по состоянию на 3 марта 2023 г.)
[3] LightGBM (2023). Настройка параметров (по состоянию на 3 марта 2023 г.)
[4] М. Морохаши (2022). Kaggleで磨く機械学習の実践力.
[5] Бекс Т. (2021). Руководство Kaggler по настройке гиперпараметров LightGBM с помощью Optuna в 2021 году (по состоянию на 3 марта 2023 г.)