В основе узла «XGBoost» лежит алгоритм градиентного бустинга на деревьях поиска решений или линейных моделях. Используется для решения задач классификации и регрессии.
Алгоритм работы градиентного бустинга:
Градиентный бустинг – алгоритм машинного обучения, который строит модель предсказания в виде ансамбля слабых предсказывающих моделей (в основном деревья решений, но также есть вариант с линейными моделями). На каждой итерации вычисляется отклонение предсказаний уже обученного ансамбля (всех предыдущих построенных моделей) на обучающей выборке. Следующая добавляемая в ансамбль модель будет сводить среднее отклонение предыдущей к минимуму.
Новые деревья добавляются в ансамбль до тех пор, пока уменьшается ошибка, либо пока не выполнится одно из правил «ранней остановки».
Особенности реализации XGBoost (Extreme Gradient Boosting) в сравнении со стандартным алгоритмом градиентного бустинга:
XGBoost поддерживает как алгоритм предварительной сортировки, так и алгоритм на основе гистограммы.
- В данной реализации каждый лист дерева не проверяется на предмет того, можно ли его разделить дальше. Здесь заранее задается максимальная глубина дерева, глубже которой узлы и листья не строятся. Далее после построения всех листьев до заданной глубины проверяется, дает ли сплит (деление) в конкретном узле прирост информации (Information Gain). Для этого Information Gain сравнивается с заданным порогом, который настраивается экспериментальным путем. Если значение меньше порога, то листья этого узла отсекаются. Таким образом избегается переобучение.
- Используется регуляризация для избегания малого количества наблюдений в листе, что также позволяет бороться с переобучением.
Список параметров узла представлен в таблице ниже.
Таблица «Параметры узла "Градиентный бустинг (XGBOOST)"»
Параметр | Возможные значения и ограничения | Описание | Группа параметров |
|---|---|---|---|
Название | Ручной ввод. | Название узла, которое будет отображаться в интерфейсе. | Общий параметр. |
Описание | Ручной ввод. | Описание узла. | Общий параметр. |
Бустер | Раскрывающийся список со следующими значениями:
| Данный параметр задает тип базового алгоритма для бустинга. Предусмотрены следующие типы:
| Общий параметр. |
Количество оценочных функций | Ручной ввод. | Данный параметр задает число итераций градиентного бустинга. | Общий параметр. |
Скорость обучения | Ручной ввод. | Данный параметр задает скорость обучения модели и контролирует, с каким весом предсказания каждой следующей модели суммируются с предсказаниями ансамбля. | Общий параметр. |
Цель обучения для регрессии | Раскрывающийся список со следующими значениями:
| Данный параметр задает используемую при обучении функцию потерь. Предусмотрены следующие:
| Общий параметр. |
Цель обучения для классификации | Раскрывающийся список со следующими значениями:
| Данный параметр задает используемую при обучении функцию потерь. Предусмотрены следующие:
| Общий параметр. |
Размер (%) валидационной выборки для ранней остановки | Ручной ввод. | Данный параметр задает размер (%) валидационной выборки для ранней остановки. | Общий параметр. |
Количество итераций до ранней остановки | Ручной ввод. | Данный параметр задает количество итераций до ранней остановки. | Общий параметр. |
Метрика для валидации регрессии | Раскрывающийся список со следующими значениями:
| Данный параметр задает метрику качества на валидационной выборке. Предусмотрены следующие метрики:
| Общие параметры. |
Метрика для валидации классификации | Раскрывающийся список со следующими значениями:
| Данный параметр задает метрику качества на валидационной выборке. Предусмотрены следующие метрики:
| Общие параметры. |
Cutoff для метрики error | Ручной ввод. | Данный параметр задает порог отсечения, чтобы относить новые примеры к одному из двух классов (задача бинарной классификации). | Общие параметры. |
Способ определения важности переменных | Раскрывающийся список со следующими значениями:
| Данный параметр определяет метод оценки важности переменных. Предусмотрены следующие методы:
| Параметры для Tree Booster (Бустер = gbtree). |
Количество параллельных потоков | Ручной ввод. | Данный параметр задает количество параллельных потоков, используемых для запуска xgboost. | Общие параметры. |
Сид XGBoost | Ручной ввод числового значения. | Начальное числовое значение для генератора случайных чисел. | Общие параметры. |
Метод построения дерева | Раскрывающийся список со следующими значениями:
| Данный параметр задает метод построения дерева. Предусмотрены следующие методы:
| Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Метод добавление узлов к дереву | Раскрывающийся список со следующими значениями:
| Данный параметр задает способ добавления новых узлов к дереву. Предусмотрены следующие методы:
| Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Количество параллельных деревьев | Ручной ввод. | Данный параметр задает количество параллельных деревьев, построенных на каждой итерации. | Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Максимальная глубина дерева | Ручной ввод. | Данный параметр задает максимальную глубину дерева. | Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Минимальное снижение потери для разбиения | Ручной ввод. | Данный параметр задает значение минимального уменьшения функции потерь для разбиения. | Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Максимальное количество листов | Ручной ввод. | Данный параметр задает максимальное количество листов. | Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Максимальное количество бинов для интервальных переменных | Ручной ввод. | Данный параметр задает максимальное количество бинов для интервальных переменных. | Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Относительное количество бинов (sketch_eps) | Ручной ввод. | Данный параметр задает относительное количество бинов, примерно соответствующее 1 / sketch_eps. По сравнению с прямым выбором количества бинов дает теоретическую гарантию точности набросков (sketch). | Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Соотношение колонок для каждого дерева | Ручной ввод. | Данный параметр задает долю переменных, используемых на каждой итерации (при построении каждого дерева). | Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Соотношение колонок для каждого уровня | Ручной ввод. | Данный параметр задает долю подвыборки признаков, которые будут использованы для обучения каждого уровня. | |
Соотношение колонок для каждого разбиения | Ручной ввод. | Данный параметр задает долю подвыборки признаков, которые будут использованы для каждого разделения (узла). | |
Минимальный вес для потомка | Ручной ввод. | Данный параметр задает минимальный вес потомка, необходимый для разделения. | Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Максимальный шаг в листе | Ручной ввод. | Данный параметр задает максимальный шаг обновления для каждого выходного листа. | Параметры для Tree Booster и DART (Бустер = gbtree или dart). |
Соотношение случайной подвыборки в обучающей выборке | Ручной ввод. | Данный параметр задает долю объектов обучающей выборки, используемых на каждой итерации. | Бэггинг. |
Метод сэмплинга | Раскрывающийся список со следующими значениями:
| Данный параметр задает метод сэмплинга. Предусмотрены следующие методы:
| Бэггинг. |
L1 регуляризатор | Ручной ввод. | Регуляризация добавляет ограничения алгоритма относительно аспектов модели, которые не зависят от данных для обучения. Регуляризация обычно используется, чтобы избежать переобучения. | Регуляризация. |
L2 регуляризатор | Ручной ввод. | Регуляризация L2 ограничивает чрезмерный рост какой-либо отдельной координаты весового вектора. Регуляризация L2 полезна в том случае, если целью является создание модели, имеющей в целом малые значения веса. | Регуляризация. |
Тип сэмплинга | Раскрывающийся список со следующими значениями:
| Данный параметр задает тип алгоритма сэмплинга. Предусмотрены следующие:
| Параметры для DART (Бустер = dart). |
Тип алгоритма нормализации | Раскрывающийся список со следующими значениями:
| Данный параметр задает тип алгоритма нормализации. Предусмотрены следующие варианты:
| Параметры для DART (Бустер = dart). |
Доля отбрасываемых деревьев | Ручной ввод. | Данный параметр задает долю отбрасываемых деревьев. | Параметры для DART (Бустер = dart). |
Отбрасывать хотя бы одно дерево | Чекбокс. | Выбор данного чекбокса указывает на то, что по крайней мере одно дерево будет отбрасываться. | Параметры для DART (Бустер = dart). |
Вероятность пропуска отбрасывания деревьев | Ручной ввод. | Данный параметр задает вероятность пропуска процедуры отбрасывания деревьев. | Параметры для DART (Бустер = dart). |
Алгоритм | Раскрывающийся список со следующими значениями:
| Данный параметр задает алгоритм для обучения линейной модели. Предусмотрены следующие алгоритмы:
| Параметры для Linear Booster (Бустер = gblinear). |
Метод выбора переменных | Раскрывающийся список со следующими значениями:
| Данный параметр задает метод выбора переменных. Предусмотрены следующие методы:
| Параметры для Linear Booster (Бустер = gblinear). |
Количество отбираемых переменных для жадных алгоритмов | Числовое значение. |
| Параметры для Linear Booster (Бустер = gblinear). |
Результаты выполнения узла:
Узел «Градиентный бустинг (XGBOOST)» имеет разные результаты в зависимости от решаемой задачи.
Результаты регрессии представлены следующими объектами:
- Тепловые карты обучающей, валидационной и тестовой выборок.
- Таблица с метриками качества модели.
- Таблица со списком переменных, сортированных по важности.
Результаты многоклассовой классификации представлены следующими объектами:
- Таблица с метриками качества модели.
- Таблица с метриками качества модели задачи классификации.
- Таблица со списком переменных, сортированных по важности.
Результаты бинарной классификации представлены следующими объектами:
- График ROC.
- График Lift.
- График Cumulative Lift.
- График Gain.
- График Cumulative Gain.
- Таблица с метриками качества модели.
- Таблица с метриками качества модели задачи классификации.
- Таблица со списком переменных, сортированных по важности.