Какие преимущества и недостатки у CatBoost по сравнению с LightGBM и XGBoost
Что проверяют
Работали ли вы с бустингами руками или знаете их по обзорным статьям. Сильный ответ показывает, откуда берутся различия: как строится дерево и как кодируются категории. Следом обычно спрашивают, что вы крутили в параметрах и на чём мерили разницу.
Как отвечать
Разложите сравнение по трём осям.
- рост дерева: XGBoost растит по уровням, с версии 2.0 гистограммный
tree_method="hist"стоит по умолчанию; LightGBM растит по листьям (num_leavesважнееmax_depth), поэтому быстрее добирается до низкой ошибки и легче переобучается; CatBoost строит симметричные деревья, одно условие на весь уровень: дерево слабее, зато инференс очень быстрый; - категориальные признаки: CatBoost считает их сам через упорядоченную целевую статистику со случайными перестановками, что гасит утечку таргета; LightGBM умеет
categorical_feature, но на высокой кардинальности переобучается; XGBoost поддерживаетenable_categorical=Trueдля категориального dtype в pandas, иначе кодируйте сами; - регуляризация: у CatBoost ordered boosting против сдвига предсказаний, у LightGBM
min_data_in_leafиfeature_fraction, у XGBoost классическиеlambda,alpha,min_child_weight.
Практический вывод: LightGBM быстрее всех учится на больших плотных таблицах; CatBoost выигрывает там, где много категорий и мало времени на препроцессинг; XGBoost предсказуем и удобен в распределённом обучении. Минусы CatBoost называйте честно: обучение на CPU медленнее, памяти нужно больше, а симметричные деревья недобирают там, где нужны глубокие несимметричные разбиения.
Где спотыкаются
Повторяют миф, что CatBoost медленный на предсказании. Наоборот: симметричные деревья это его главный козырь по latency, медленнее он обычно на обучении.
Говорят, что CatBoost «не переобучается». Переобучается, просто у него встроена защита от утечки таргета в кодировании категорий. Ранняя остановка по валидации нужна ему так же, как остальным.
Сравнивают библиотеки на дефолтных параметрах и объявляют победителя. Разница в дефолтах больше, чем разница в качестве после честного подбора гиперпараметров.