Ответ
В проектах по машинному обучению я активно использовал три основные библиотеки для градиентного бустинга, каждая со своими сильными сторонами:
1. XGBoost (eXtreme Gradient Boosting) Мой частый выбор для соревнований и production-задач из-за скорости, точности и богатого функционала.
import xgboost as xgb
from sklearn.model_selection import GridSearchCV
# Часто использую с ранней остановкой и кросс-валидацией
params = {'max_depth': [3, 5], 'learning_rate': [0.01, 0.1]}
model = xgb.XGBClassifier(n_estimators=1000, objective='binary:logistic')
grid = GridSearchCV(model, params, cv=5, scoring='roc_auc')
grid.fit(X_train, y_train, eval_set=[(X_val, y_val)], early_stopping_rounds=50, verbose=False)
Плюсы: Регуляризация (L1/L2), встроенная обработка пропусков, возможность использовать GPU.
2. LightGBM Использую при работе с очень большими датасетами или когда важна скорость обучения.
from lightgbm import LGBMClassifier
model = LGBMClassifier(n_estimators=100, num_leaves=31, boosting_type='gbdt')
model.fit(X_train, y_train)
Плюсы: Алгоритмы GOSS и EFB для ускорения, эффективная работа с категориальными признаками.
3. CatBoost Брал на вооружение в задачах с большим количеством категориальных признаков, где не хотелось заниматься сложным feature engineering.
from catboost import CatBoostClassifier, Pool
train_pool = Pool(X_train, y_train, cat_features=cat_features_indices)
model = CatBoostClassifier(iterations=100, depth=6, learning_rate=0.1)
model.fit(train_pool, verbose=50)
Плюсы: Автоматическая обработка категориальных переменных, устойчивость к переобучению, встроенные инструменты интерпретации.
4. GradientBoosting от scikit-learn Начинал с него, так как он хорошо интегрирован в sklearn-экосистему (pipelines, GridSearch). Подходит для быстрого прототипирования, но для финальных моделей обычно перехожу на XGBoost или LightGBM из-за производительности.
На практике выбор зависит от данных: CatBoost для "грязных" данных с категориями, LightGBM для больших объемов, XGBoost как надежный универсальный вариант.