XGBoost vs LightGBM vs CatBoost на собеседовании Data Scientist

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — 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 Хороший Отличный Средний
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Категориальные 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.

Связанные темы

FAQ

Какой выбрать для production?

Если есть выбор — CatBoost (хорошие defaults). Для скорости / largest data — LightGBM. XGBoost — стабильный middle ground.

Это официальная информация?

Нет. Статья основана на документации XGBoost, LightGBM, CatBoost.


Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.