XGBoost vs LightGBM vs CatBoost на собеседовании Data Scientist
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем разбирать на собесе
Boosting trees — top-1 на табличных задачах. На собесе DS: «отличия трёх», «когда CatBoost», «leaf-wise vs level-wise».
XGBoost
XGBoost (Chen 2014). Classic gradient boosting реализация.
Особенности:
- L1/L2 регуляризация в objective.
- Sparse-aware (работает с missing values).
- Cache-aware optimization.
- Distributed training.
Подход: level-wise tree growth (растим все нодами одного уровня вместе). Стабильно, но иногда subсub-optimal trees.
Когда использовать:
- Классика, известная стабильность.
- Compliant interpretability (long history).
- Medium dataset.
LightGBM
LightGBM (Microsoft 2017). Оптимизировано под скорость на больших данных.
Особенности:
- Histogram-based split — bucketize continuous values. В разы быстрее.
- Leaf-wise growth — растёт самый «информативный» лист. Глубже, точнее, но риск overfit.
- GOSS (Gradient One-Side Sampling) — sample-based ускорение.
- EFB (Exclusive Feature Bundling) — bundle sparse features.
- Native categorical через
categorical_featureпараметр.
Когда использовать:
- Большие dataset (миллионы строк).
- Скорость критична.
- High-dim sparse features.
CatBoost
CatBoost (Yandex 2017). Фокус на categorical features.
Особенности:
- Native categorical — никакого one-hot / target encoding.
- Ordered boosting — снижает target leakage.
- Symmetric trees — все нодом на одном уровне используют тот же split. Быстрее inference.
- Better defaults — меньше нужно тюнить.
Когда использовать:
- Много категорий (city, brand, user_id).
- Нужны хорошие defaults без HP-tuning.
- Stable production model.
Сравнение
| XGBoost | LightGBM | CatBoost | |
|---|---|---|---|
| Скорость обучения | Средняя | Самая высокая | Высокая |
| Память | Средняя | Низкая | Средняя |
| Качество default | Хорошее | Хорошее | Часто лучше |
| Categorical native | Нет | Базовое | Лучшее |
| Risk of overfit | Средний | Высокий (leaf-wise) | Низкий |
| GPU support | Да | Да | Да |
| Parallelism | Хороший | Отличный | Средний |
Категориальные features
XGBoost. Не native — нужен one-hot или target encoding.
df_oh = pd.get_dummies(df, columns=['city'])
xgb.train(...)LightGBM.
lgb.train(..., categorical_feature=['city'])Internally делает target-encoding с smoothing.
CatBoost. Самое чистое.
CatBoostRegressor(cat_features=['city']).fit(...)Internally — ordered target encoding (без leakage). Лучшее качество на high-cardinality.
Tuning основные параметры
Общие (все три):
n_estimators— число деревьев (100-5000).learning_rate— обычно 0.01-0.1.max_depth— 3-10 (XGB / Cat). LightGBM —num_leaves(31 default).subsample,colsample_bytree— стохастика, 0.7-1.0.
Регуляризация:
reg_alpha,reg_lambda(XGB) — L1 / L2.min_child_weight(XGB),min_data_in_leaf(LGB).
Early stopping: на validation set. Set early_stopping_rounds=50.
Частые ошибки
XGBoost для categorical через one-hot 1000 классов. Взрыв размерности. Используй CatBoost.
LightGBM на маленьких данных. Leaf-wise overfits. Используй XGBoost или ставь min_data_in_leaf = 100.
Default n_estimators=100. Часто мало. Тренируй больше + early stopping.
Не использовать early stopping. Переобучается без сигнала.
Сравнивать модели по training accuracy. Только по validation / OOF.
Связанные темы
- Bagging vs Boosting на собесе DS
- Decision trees на собесе DS
- Hyperparameter tuning на собесе DS
- Class imbalance на собесе DS
- Подготовка к собесу Data Scientist
FAQ
Какой выбрать для production?
Если есть выбор — CatBoost (хорошие defaults). Для скорости / largest data — LightGBM. XGBoost — стабильный middle ground.
Это официальная информация?
Нет. Статья основана на документации XGBoost, LightGBM, CatBoost.
Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.