Чем отличаются GBM и XGBoost?

Где лежит разница между GBM и XGBoost?

 

Я уверен, что все знают о алгоритмах GBM и XGBoost. Они являются основными алгоритмами для многих реальных задач и соревнований, потому что метрика вывода часто лучше, чем у других моделей.

Для тех, кто не знает о GBM и XGBoost, GBM (Gradient Boosting Machine) и XGBoost (eXtreme Gradient Boosting) являются методами ансамблевого обучения. Ансамблевое обучение – это метод машинного обучения, в котором обучаются и комбинируются несколько “слабых” моделей (чаще всего деревьев решений) для дальнейших целей.

Алгоритм был основан на технике ансамблевого обучения, известной по их названию. Техника бустинга – это метод, который пытается последовательно объединить несколько слабых моделей, каждая из которых исправляет своего предшественника. Каждая модель учится на своих предыдущих ошибках и исправляет ошибки предыдущих моделей.

Это фундаментальное сходство между GBM и XGB, но какие же различия? Об этом мы поговорим в этой статье, так что приступим.

 

GBM (Gradient Boosting Machine)

 

Как уже упоминалось выше, GBM основан на бустинге, который последовательно итерирует слабую модель для обучения на ошибках и создания надежной модели. GBM разрабатывает более хорошую модель для каждой итерации, минимизируя функцию потерь с помощью градиентного спуска. Градиентный спуск – это концепция нахождения минимума функции на каждой итерации, такой как функция потерь. Итерация продолжается до достижения критерия остановки.

Вы можете увидеть концепцию GBM на изображении ниже.  

Вы можете увидеть на изображении выше, что на каждой итерации модель пытается минимизировать функцию потерь и учиться на предыдущей ошибке. Конечная модель будет полной слабой моделью, которая суммирует все предсказания модели.

 

XGB (eXtreme Gradient Boosting) и как он отличается от GBM

 

XGBoost or eXtreme Gradient Boosting – это алгоритм машинного обучения, основанный на алгоритме градиентного бустинга, разработанном Тиангки Ченом и Карлосом Густрином в 2016 году. На базовом уровне алгоритм все равно следует последовательной стратегии для улучшения следующей модели на основе градиентного спуска. Однако некоторые отличия XGBoost делают эту модель одной из лучших с точки зрения производительности и скорости.

 

1. Регуляризация

 

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

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

Существуют два вида регуляризации, которую может использовать XGBoost: L1 регуляризация (Lasso) и L2 регуляризация (Ridge). L1 регуляризация пытается минимизировать веса или коэффициенты признаков до нуля (фактически превращаясь в выбор признаков), в то время как L2 регуляризация пытается равномерно уменьшить коэффициенты (помощь в работе с мультиколлинеарностью). Реализуя обе регуляризации, XGBoost может лучше избегать переобучения, чем GBM.

 

2. Параллелизация

 

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

Параллелизация направлена на ускорение процесса построения дерева, в основном во время разделения. Используя все доступные ядра обработки, время обучения XGBoost может быть сокращено.

Говоря о ускорении процесса XGBoost, разработчик также предварительно обрабатывает данные в разработанном им формате данных, DMatrix, для экономии памяти и повышения скорости обучения.

3. Обработка отсутствующих данных

Наш набор данных для обучения может содержать отсутствующие данные, которые мы должны явно обработать перед их передачей в алгоритм. Однако XGBoost имеет собственный встроенный обработчик отсутствующих данных, в то время как GBM не имеет его.

XGBoost реализовал свою технику обработки отсутствующих данных, называемую Sparsity-aware Split Finding. Для любых встречающихся разреженностей данных (отсутствующие данные, Dence Zero, OHE), модель будет учиться на этих данных и находить наиболее оптимальное деление. Модель будет определять, куда следует поместить отсутствующие данные во время деления и проверять, какое направление минимизирует потери.

4. Подрезка дерева

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

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

5. Встроенная кросс-валидация

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

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

Заключение

GBM и XGBoost – популярные алгоритмы во многих реальных случаях и конкурсах. Концептуально они оба используют усиливающие алгоритмы, которые используют слабые обучающие алгоритмы для достижения лучших моделей. Однако они отличаются в реализации их алгоритма. XGBoost усовершенствует алгоритм, встраивая регуляризацию, выполняет параллелизацию, лучшую обработку отсутствующих данных, различные стратегии обрезки дерева и техники встроенной кросс-валидации.

[Cornellius Yudha Wijaya](https://www.linkedin.com/in/cornellius-yudha-wijaya/) – помощник по науке о данных и автор. В свободное время, работая на полную ставку в компании Allianz Indonesia, он любит делиться советами по использованию Python и данными в социальных сетях и в печатных изданиях.