Назад к подготовке

CatBoost: target encoding без leakage

Как CatBoost кодирует категориальные признаки и почему это не дает leakage?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

CatBoost считает ordered target statistics по предыдущим объектам в случайной перестановке, а не по всей train-выборке сразу. Так объект не видит собственный target.

Полный разбор

Обычный target encoding легко протекает: если посчитать средний target категории по всей train-выборке, значение для объекта включает его собственный label. На редких категориях это особенно опасно.

CatBoost использует ordered target statistics. Он строит случайные перестановки объектов и для каждого объекта считает статистику категории только по объектам, которые стоят раньше в этой перестановке. Добавляются prior и сглаживание, чтобы редкие категории не давали экстремальные значения.

Это снижает leakage и делает train-процедуру ближе к inference: для нового объекта мы не знаем его target, а можем использовать только историческую статистику.

Теория

Ordered statistics - способ приблизить online encoding и не подглядывать в label текущего объекта.

Типичные ошибки

  • Считать target encoding до cross-validation на всей train data.
  • Не сглаживать редкие категории.
  • Не отличать ordered encoding от one-hot.