В основе узла "XGBoost" лежит алгоритм градиентного бустинга на деревьях поиска решений или линейных моделях. Используется для решения задач классификации и регрессии.

Алгоритм работы градиентного бустинга:

Градиентный бустинг – алгоритм машинного обучения, который строит модель предсказания в виде ансамбля слабых предсказывающих моделей (в основном Дерево решений, но также есть вариант с линейными моделями). На каждой итерации вычисляется отклонение предсказаний уже обученного ансамбля (всех предыдущих построенных моделей) на обучающей выборке. Следующая добавляемая в ансамбль модель будет сводить среднее отклонение предыдущей к минимуму.
Новые деревья добавляются в ансамбль до тех пор, пока уменьшается ошибка, либо пока не выполнится одно из правил «ранней остановки».

Особенности реализации XGBoost (Extreme Gradient Boosting) в сравнении со стандартным алгоритмом градиентного бустинга:

XGBoost поддерживает как алгоритм предварительной сортировки, так и алгоритм на основе гистограммы.

  1. В данной реализации каждый лист дерева не проверяется на предмет того, что можно ли его разделить дальше. Здесь заранее задается максимальная глубина дерева, глубже которой узлы и листья не строятся. Далее после построения всех листьев до заданной глубины проверяется дает ли сплит (деление) в конкретном узле прирост информации (Information Gain). Для этого Information Gain сравнивается с заданным порогом, который настраивается экспериментальным путем. Если значение меньше порога, то листья этого узла отсекаются. Таким образом избегается переобучение
  2. Используется регуляризация для избежания малого количества наблюдений в листе, что также позволяет бороться с переобучением.


Список параметров узла представлен в таблице ниже.

Параметры узла «Градиентный бустинг (XGBOOST)»

Параметр

Возможные значения и ограничения

Описание

Группа параметров

Название

Ручной ввод
Ограничений на значение нет

Название узла, которое будет отображаться в интерфейсе

Общий параметр

Описание

Ручной ввод
Ограничений на значение нет

Описание узла

Общий параметр

Бустер

Раскрывающийся список со следующими значениями:

  • gbtree (по умолчанию)
  • gblinear
  • DART

Данный параметр задает тип базового алгоритма для бустинга. Предусмотрены следующие типы:

  • gbtree – бустинг на основе деревьев
  • gblinear – бустинг на основе линейных моделей
  • DART – модификация gbtree (отбрасывает деревья, для предотвращения переобучения)

Общий параметр

Количество оценочных функций

Ручной ввод
Число больше 0
По умолчанию — 100

Данный параметр задает число итераций градиентного бустинга

Общий параметр

Скорость обучения

Ручной ввод
Число больше 0 и меньше 1
По умолчанию — 0,3

Данный параметр задает скорость обучения модели и контролирует, с каким весом предсказания каждой следующей модели суммируются с предсказаниями ансамбля.
Значение по умолчанию (0,3) является слишком большим, обычно хорошо работают значения меньше 0.1

Общий параметр

Цель обучения для регрессии

Раскрывающийся список со следующими значениями:

  • Квадрат ошибки (по умолчанию)
  • Функция потерь Хьюбера
  • Пуассоновская регрессия
  • Регрессия Твиди
  • Гамма регрессия

Данный параметр задает используемую при обучении функцию потерь. Предусмотрены следующие:

  • Квадрат ошибки – квадратичная функция потерь
  • Функция потерь Хьюбера – функция квадратична для малых значений остатка (разница между наблюдаемым и предсказанным значением), и линейна для больших значений остатка
  • Пуассоновская регрессия – предназначена для прогнозирования счетчиков (неотрицательных целых чисел) (например, количество дождевых явлений в год или количество событий прерывания производства в год). Поэтому использовать данную функцию следует в случае соответствия следующим условиям:
  • переменная ответа имеет распределение Пуассона,
  • метки не должны быть отрицательными
  • бессмысленно использовать для дробных чисел
  • Регрессия Твиди – предназначена для прогнозирования целевой переменной, имеющей распределение Твиди (например, общее количество осадков в год или общее время прерывания в год)
  • Гамма регрессия – предназначена для прогнозирования целевой переменной, имеющей гамма-распределение (например, количество осадков на одно событие или продолжительность прерывания)

Общий параметр

Цель обучения для классификации

Раскрывающийся список со следующими значениями:

  • Бинарная логистическая регрессия (по умолчанию)
  • Бинарная с hinge loss
  • Мультиклассовая с softprob
  • Мультиклассовая с softmax

Данный параметр задает используемую при обучении функцию потерь. Предусмотрены следующие:

  • Бинарная логистическая регрессия – возвращает прогнозируемую вероятность (не класс)
  • Бинарная с hinge loss – кусочно-линейная функция потерь для бинарной классификации. Возвращает принадлежность одному из двух классов – 0 или 1
  • Мультиклассовая с softprob – функция softprob для мультиклассовой классификации, возвращает матрицу со значениями вероятности каждого класса
  • Мультиклассовая с softmax – функция softmax для мультиклассовой классификации, возвращает класс с максимальной вероятностью принадлежности

Общий параметр

Дисперсия распределения Твиди

Ручной ввод
Число больше 1 и меньше 2
По умолчанию — 1,5

Данный параметр используется для управления дисперсией распределения Твиди.
Значение ближе к 2 переходит в гамма-распределение, значение ближе к 1 – распределение Пуассона.

Параметр актуален при заданных Цели обучения для регрессии = Регрессия Твиди и Метриках для валидации регрессии, связанными с распределением Твиди.

Размер (%) валидационной выборки для ранней остановки

Ручной ввод
Число больше 0 и меньше 1
По умолчанию – 0,1

Данный параметр задает размер (%) валидационной выборки для ранней остановки

Общий параметр

Количество итераций до ранней остановки

Ручной ввод
По умолчанию – 0

Данный параметр задает количество итераций до ранней остановки

Общий параметр

Метрика для валидации регрессии

Раскрывающийся список со следующими значениями:

  • RMSE (по умолчанию)
  • MAE
  • MAPE
  • poisson nloglik
  • gamma nloglik
  • gamma deviance
  • tweedie nloglik

Данный параметр задает метрику качества на валидационной выборке. Предусмотрены следующие метрики:

  • RMSE – Среднеквадратическая ошибка
  • MAE – Средняя абсолютная ошибка
  • MAPE – Средняя абсолютная ошибка в процентах
  • poisson nloglik – отрицательная логарифмическая функция правдоподобия для регрессии Пуассона
  • gamma nloglik – отрицательная логарифмическая функция правдоподобия для гамма-регрессии
  • gamma deviance – остаточное отклонение для гамма-регрессии
  • tweedie nloglik – отрицательная логарифмическая функция правдоподобия для регрессии Твиди

Общие параметры

Метрика для валидации классификации

Раскрывающийся список со следующими значениями:

  • logloss (по умолчанию)
  • error
  • merror
  • mlogloss
  • auc
  • aucpr

Данный параметр задает метрику качества на валидационной выборке. Предусмотрены следующие метрики:

  • logloss – логистическая функция ошибки
  • error – частота ошибок бинарной классификации, рассчитывается как неправильно классифицированные объекты/все объекты. При прогнозировании положительными экземплярами будут считаться наблюдения со значением прогноза больше 0,5, остальные – как отрицательные
  • merror – частота ошибок мультикласссовой классификации, рассчитывается как неправильно классифицированные объекты/все объекты
  • mlogloss – мультиклассовая логистическая функция ошибки
  • auc – количественная интерпретация кривой ошибок, площадь, ограниченная ROC-кривой и осью доли ложных положительных классификаций
  • aucpr – площадь под PR-кривой (Precision-Recall curve)

Общие параметры

Cutoff для метрики error

Ручной ввод
По умолчанию – 0,5

Данный параметр задает порог отсечения, чтобы относить новые примеры к одному из двух классов (задача бинарной классификации).

Общие параметры
Актуален при выбранной метрике error для валидации классификации.

Способ определения важности переменных

Раскрывающийся список со следующими значениями:

  • gain (по умолчанию)
  • weight
  • cover
  • total gain
  • total cover

Данный параметр определяет метод оценки важности переменных. Предусмотрены следующие методы:

  • gain – средний выигрыш по всем разделениям (splits), в которых используется переменная
  • weight – количество раз, когда переменная используется для разделения данных по всем деревьям
  • cover – среднее количество наблюдений для каждой фичи по всем разделениям, в которых используется переменная
  • total gain – общий выигрыш по всем разделениям, в которых используется переменная
  • total cover – общее количество наблюдений для каждой фичи всех разделений, в которых используется переменная

Параметры для Tree Booster (Бустер = gbtree).
Для Бустер = gblinear значение параметра = 'weight'

Количество параллельных потоков

Ручной ввод
Число больше или равно 0
По умолчанию – 0

Данный параметр задает количество параллельных потоков, используемых для запуска xgboost
0 означает использование всех доступных потоков (CPU)

Общие параметры

Seed

Ручной ввод числового значения
По умолчанию — 42

Начальное числовое значение для генератора случайных чисел

Общие параметры

Метод построения дерева

Раскрывающийся список со следующими значениями:

  • auto (по умолчанию)
  • exact
  • approx
  • hist

Данный параметр задает метод построения дерева. Предусмотрены следующие методы:

  • auto – для небольшого набора данных будет использован exact, для большого набора данных – approx
  • exact – жадный алгоритм, который перебирает все наблюдения входного набора в ходе процедуры поиска разделения. Данный метод более точен среди других жадных методов, но медленнее в вычислительной производительности
  • approx – приближенный жадный алгоритм, который использует quantile sketch (квантильные наброски) и gradient histogram (приближенные гистограммы статистики градиента)
  • hist – более быстрый приближенный жадный алгоритм, оптимизированный для histogram.

Параметры для Tree Booster и DART (Бустер = gbtree или dart)

Метод добавления узлов к дереву

Раскрывающийся список со следующими значениями:

  • depthwise (по умолчанию)
  • lossguide

Данный параметр задает способ добавления новых узлов к дереву. Предусмотрены следующие методы:

  • depthwise – разделение в узлах, ближайших к корню
  • lossguide – разделение на узлы с наибольшим изменением значения функции потерь

Параметры для Tree Booster и DART (Бустер = gbtree или dart)
Поддерживается только если метод построения дерева выбран как hist

Количество параллельных деревьев

Ручной ввод
Число больше или равно 0
По умолчанию – 1

Данный параметр задает количество параллельных деревьев, построенных на каждой итерации

Параметры для Tree Booster и DART (Бустер = gbtree или dart)

Максимальная глубина дерева

Ручной ввод
Число больше 0
По умолчанию – 6

Данный параметр задает максимальную глубину дерева

Параметры для Tree Booster и DART (Бустер = gbtree или dart)

Минимальное снижение потери для разбиения

Ручной ввод
Число больше или равно 0, float
По умолчанию – 0

Данный параметр задает значение минимального уменьшения функции потерь для разбиения

Параметры для Tree Booster и DART (Бустер = gbtree или dart)

Максимальное количество листов

Ручной ввод
Число больше или равно 0
По умолчанию – 0

Данный параметр задает максимальное количество листов.

Параметры для Tree Booster и DART (Бустер = gbtree или dart)
Актуален, если выбран Метод добавления узлов к дереву = lossguide

Максимальное количество бинов для интервальных переменных

Ручной ввод
Число больше 0
По умолчанию – 256

Данный параметр задает максимальное количество бинов для интервальных переменных.
Увеличение этого числа повышает оптимальное разделение за счет увеличения времени вычислений.

Параметры для Tree Booster и DART (Бустер = gbtree или dart)
Актуален, если выбран метод построения дерева = hist

Относительное количество бинов (sketch_eps)

Ручной ввод
Число больше 0 и меньше 1
По умолчанию – 0,03

Данный параметр задает относительное количество бинов, примерно соответствующее 1 / sketch_eps. По сравнению с прямым выбором количества бинов дает теоретическую гарантию точности набросков (sketch).

Параметры для Tree Booster и DART (Бустер = gbtree или dart)
Актуален, если выбран метод построения дерева = approx

Соотношение колонок для каждого дерева

Ручной ввод
Число больше 0 и меньше или равно 1
По умолчанию – 1

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

Параметры для Tree Booster и DART (Бустер = gbtree или dart)
Данные параметры работают кумулятивно. Например, комбинация {'colsample_bytree':0,5, 'colsample_bylevel':0,5, 'colsample_bynode':0,5} с 64 функциями оставит 8 функций на выбор при каждом разбиении.

Соотношение колонок для каждого уровня

Ручной ввод
Число больше 0 и меньше или равно 1
По умолчанию – 1

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


Соотношение колонок для каждого разбиения

Ручной ввод
Число больше 0 и меньше или равно 1
По умолчанию – 1

Данный параметр задает долю подвыборки признаков, которые будут использованы для каждого разделения (узла).
Подвыборка происходит каждый раз, когда оценивается новое разбиение. Колонки (столбцы) выбираются из набора колонок, выбранного для текущего уровня


Минимальный вес для потомка

Ручной ввод
Число больше или равно 0
По умолчанию – 0

Данный параметр задает минимальный вес потомка, необходимый для разделения.
Если шаг разделения дерева приводит к листу с суммой весов меньше, чем заданное данным параметром значение, то процесс построения откажется от дальнейшего разделения.
В задаче линейной регрессии это соответствует минимальному количеству наблюдений, которые должны быть в каждом узле.
Чем больше значение, тем более консервативен алгоритм.

Параметры для Tree Booster и DART (Бустер = gbtree или dart)

Максимальный шаг в листе

Ручной ввод
Число больше или равно 0
По умолчанию – 0

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

Параметры для Tree Booster и DART (Бустер = gbtree или dart)

Соотношение случайной подвыборки в обучающей выборке

Ручной ввод
Число больше 0 или меньше или равно 1
По умолчанию – 1

Данный параметр задает долю объектов обучающей выборки, используемых на каждой итерации.
При значении равном 0,5 XGBoost будет случайным образом отбирать половину обучающих данных перед обучением (growing) дерева, что предотвращает переобучение.
Подвыборка будет происходить один раз в каждой итерации бустинга

Бэггинг

Метод сэмплинга

Раскрывающийся список со следующими значениями:

  • uniform (по умолчанию)
  • gradient based

Данный параметр задает метод сэмплинга. Предусмотрены следующие методы:

  • uniform – каждое наблюдение имеет равную вероятность быть выбранным. Для хороших результатов необходимо выбрать соотношение случайной подвыборки в обучающей выборке = 0,5
  • gradient based – вероятность выбора наблюдения пропорциональна регуляризованному абсолютному значению градиентов

Бэггинг

L1 регуляризатор

Ручной ввод
По умолчанию – 0

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

Регуляризация
Параметры для Linear Booster и Tree Booster (Бустер = gblinear или Бустер = gbtree)

L2 регуляризатор

Ручной ввод
По умолчанию – 1

Регуляризация L2 ограничивает чрезмерный рост какой-либо отдельной координаты весового вектора. Регуляризация L2 полезна в том случае, если целью является создание модели, имеющей в целом малые значения веса.

Регуляризация
Параметры для Linear Booster и Tree Booster (Бустер = gblinear или Бустер = gbtree)

Тип сэмплинга

Раскрывающийся список со следующими значениями:

  • uniform (по умолчанию)
  • weighted

Данный параметр задает тип алгоритма сэмплинга. Предусмотрены следующие:

  • uniform –деревья имеют одинаковую вероятность быть отброшенными
  • weighted – отбрасываемые деревья выбираются пропорционально весу

Параметры для DART (Бустер = dart)

Тип алгоритма нормализации

Раскрывающийся список со следующими значениями:

  • Дерево (по умолчанию)
  • Лес

Данный параметр задает тип алгоритма нормализации. Предусмотрены следующие варианты:

  • Дерево – новые деревья имеют такой же вес, как и каждое из отбрасываемых деревьев. Вес новых деревьев равен 1/(k + скорость обучения). Отбрасываемые деревья масштабируются с коэффициентом k /(k + скорость обучения)
  • Лес – новые деревья имеют тот же вес, что и сумма отбрасываемых деревьев (леса). Вес новых деревьев равен 1/(k + скорость обучения). Отбрасываемые деревья масштабируются с коэффициентом k /(k + скорость обучения)

Параметры для DART (Бустер = dart)

Доля отбрасываемых деревьев

Ручной ввод
Число больше или равно 0 и меньше или равно 1
По умолчанию – 0

Данный параметр задает долю отбрасываемых деревьев

Параметры для DART (Бустер = dart)

Отбрасывать хотя бы одно дерево

Чекбокс

Выбор данного чекбокса указывает на то, что по крайней мере одно дерево будет отбрасываться

Параметры для DART (Бустер = dart)

Вероятность пропуска отбрасывания деревьев

Ручной ввод
Число больше или равно 0 и меньше или равно 1
По умолчанию – 0

Данный параметр задает вероятность пропуска процедуры отбрасывания деревьев.
Если процедура отбрасывания деревьев пропущена, новые деревья добавляются так же, как и gbtree.

Параметры для DART (Бустер = dart)

Алгоритм

Раскрывающийся список со следующими значениями:

  • shortgun (по умолчанию)
  • coord descent

Данный параметр задает алгоритм для обучения линейной модели. Предусмотрены следующие алгоритмы:

  • shortgun – алгоритм спуска с параллельными координатами
  • coord descent – алгоритм спуска по обычным координатам

Параметры для Linear Booster (Бустер = gblinear)

Метод выбора переменных

Раскрывающийся список со следующими значениями:

  • cyclic (по умолчанию)
  • shuffle
  • random
  • greedy
  • thrifty

Данный параметр задает метод выбора переменных. Предусмотрены следующие методы:

  • cyclic – детерминированный выбор путем циклического перебора признаков по одному
  • shuffle – похоже на cyclic, но со случайным перемешиванием функций перед каждым обновлением
  • random – случайный (с заменой) селектор координат
  • greedy – выбирается координата с наибольшей величиной градиента.
  • thrifty – перед циклическими обновлениями функции переупорядочиваются по убыванию величины их одномерных изменений веса

Параметры для Linear Booster (Бустер = gblinear)

Количество отбираемых переменных для жадных алгоритмов

Числовое значение
По умолчанию – 0


Данный параметр задает количество отбираемых переменных для жадных алгоритмов.
Значение, равное 0, означает использование всех функций.

Параметры для Linear Booster (Бустер = gblinear)
Актуален, если выбраны метод выбора переменных = greedy или thrifty


Результаты выполнения узла:

Узел «Градиентный бустинг (XGBOOST)» имеет разные результаты в зависимости от решаемой задачи.

Результаты регрессии представлены следующими объектами:

  • Тепловые карты обучающей, валидационной и тестовой выборок.
  • Таблица с метриками качества модели.
  • Таблица со списком переменных, сортированных по важности.

Результаты многоклассовой классификации представлены следующими объектами:

  • Таблица с метриками качества модели.
  • Таблица с метриками качества модели задачи классификации.
  • Таблица со списком переменных, сортированных по важности.

Результаты бинарной классификации представлены следующими объектами:

  • График ROC.
  • График Lift.
  • График Cumulative Lift.
  • График Gain.
  • График Cumulative Gain.
  • Таблица с метриками качества модели.
  • Таблица с метриками качества модели задачи классификации.
  • Таблица со списком переменных, сортированных по важности.
  • Нет меток