Самые важные параметры LightGBM, что они делают и как их настроить

LightGBM — популярный фреймворк для повышения градиента. Обычно вы начинаете указывать следующие основные параметры:

  • objective и metric для постановки задачи
  • seed для воспроизводимости
  • verbose для отладки
  • num_iterations, learning_rate и early_stopping_round для обучения

Но куда вы пойдете отсюда? LightGBM имеет более 100 параметров [2], которые можно настраивать. Кроме того, каждый параметр имеет один или несколько псевдонимов, из-за чего новичкам сложно получить четкое представление об основных параметрах.

Таким образом, в данной статье рассматриваются наиболее важные и часто используемые гиперпараметры LightGBM, которые перечислены ниже:

Далее значения по умолчанию взяты из документации [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 г.)