Перейти к основному содержимому

Популярные реализации

На языке python алгоритм градиентного бустинга над решающими деревьями реализован в библиотеке sklearn классами GradientBoostingClassifier и GradientBoostingRegressor для решения задач классификации и регрессии соответственно.

Начиная с версии 0.21, там также реализованы ускоренные версии алгоритма HistGradientBoostingClassifier и HistGradientBoostingRegressor, значительно ускоряющие настройку правил во внутренних узлах решающих деревьев за счёт перебора не по всем допустимым порогам, а по более грубой сетке значений. Также эти реализации допускают автоматическую обработку пропущенных значений признаков, отправляя все объекты с пропущенным признаком либо в левое, либо в правое поддерево, в зависимости от того, что приводит к большему снижению функции неопределённости.

Также существуют три популярные и более продвинутые реализации бустинга:

НазваниеДокументацияРазработчики
xgBoostсайтXGBoost Contributors
LightGBMсайтMicrosoft
CatBoostсайтЯндекс

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

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

  • xgBoost использует оптимизацию второго порядка (квадратичную аппроксимацию) функции потерь.

  • LightGBM настраивает каждую базовую модель не на всех данных, а на подмножестве объектов, сильнее всего влияющих на прогнозы ансамбля, что существенно ускоряет настройку модели. Также метод использует специальную технику для эффективной работы с разреженными данными (содержащими много нулевых значений).

  • CatBoost строится не над традиционными , а над небрежными решающими деревьями (oblivious decision trees), в которых на каждом уровне дерева во всех узлах проверяется условие над одним и тем же признаком. Это позволяет настраивать деревья быстрее без потери качества всего ансамбля. Также CatBoost использует специальную обработку категориальных переменных.