CatBoost

Автор:

Библиотека градиентного бустинга по типу "деревья решений", которая умеет работать с категориальными признаками

CatBoost — это библиотека градиентного бустинга по типу "деревья решений", которая умеет работать с категориальными признаками и стабильно обучается без сложной ручной настройки. Такую модель можно быстро запустить на «грязных» табличных данных и сразу получить хороший результат.

Зачем появился CatBoost

Классический градиентный бустинг (XGBoost, LightGBM) отлично работает, но требует аккуратной подготовки данных:

— категориальные признаки нужно готовить вручную;
— порядок строк может влиять на результат;
— требуется много гиперпараметров.

CatBoost сам находит категориальные признаки, избавляя Дата-сайентиста от необходимости выполнять энкодинг (Label / One-Hot Encoding). Более того, он обучается так, чтобы не зависеть от порядка объектов и уменьшать Смещение (Bias) при обучении;

CatBoost обычно выигрывает, если:

— данные табличные;
— много категориальных признаков;
— данные небольшие или средние по размеру;
— важна скорость прототипирования.

Минимальный пример на Python

Рассмотрим пример бинарной классификации с категориальными признаками.

from catboost import CatBoostClassifier
import pandas as pd

Данные

data = pd.DataFrame({
    "age": [25, 32, 47, 51, 23],
    "city": ["Moscow", "SPb", "Moscow", "Kazan", "SPb"],
    "salary": [50000, 60000, 120000, 90000, 45000],
    "target": [0, 1, 1, 1, 0]
})

X = data.drop(columns="target")
y = data["target"]

Обучение модели

model = CatBoostClassifier(
    iterations=200,
    depth=6,
    learning_rate=0.1,
    loss_function="Logloss",
    verbose=False
)

model.fit(
    X, y,
    cat_features=["city"]
)

Предсказание

preds = model.predict(X)
probs = model.predict_proba(X)

print(preds)
print(probs)

Почему CatBoost часто выбирают на практике

  • минимальная подготовка данных
  • высокая стабильность
  • хорошие дефолтные параметры
  • сильные результаты «из коробки»

Очень часто CatBoost — это:

лучший baseline для табличных данных.


Ограничения

CatBoost — не универсальное решение:

  • не подходит для изображений и текста;
  • может быть медленнее LightGBM на очень больших данных;
  • модель «тяжелее» по размеру.