Назад к подготовке
ВопросСредняяfeature-engineeringТехническое собеседование · Uzum

Как работать с категориальными признаками в ранжировании

В модели есть категориальные признаки товара и пользователя. Как их кодировать и где возникают риски?

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

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

Загрузка

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

Для деревьев часто работают one-hot, count/frequency и target encoding с защитой от leakage. Для нейросетей - embeddings. Для high-cardinality признаков нужны smoothing, rare buckets, hashing или регуляризация.

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

Выбор кодирования зависит от модели. Для бустинга можно использовать one-hot для малой кардинальности, count/frequency encoding, target encoding или встроенную обработку категорий, если библиотека ее поддерживает. Target encoding обязательно делается out-of-fold или по прошлым данным, иначе модель увидит таргет.

Для нейросетевых ранкеров обычно используют embedding table: id категории превращается в плотный вектор. Для редких значений нужен unknown/rare bucket, hashing trick, регуляризация и мониторинг новых категорий в проде. Иногда полезно добавить hierarchy: category, subcategory, brand, seller.

Риск в RecSys - popularity leakage и переобучение на частые категории. Поэтому кодирование надо проверять по time split и срезам: новые товары, новые продавцы, редкие категории, long tail.

Теория

Категориальный признак несет сильный сигнал, но легко превращается в leakage или memorization.

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

  • Делать target encoding на всей выборке сразу.
  • Не иметь стратегии для новых категорий в проде.
  • Путать category id как число с осмысленным числовым признаком.