RecSys SysDes

Задача: рек-блок на маркетплейсе

На маркетплейсе с большим количеством пользователей не было персональных рекомендаций (только поиск). Нужно добавить блок товаров (персональные рекомендации).

Бизнес-требования

  • Бизнес-цель: повышение количества продаж
  • Данные: ~10 млн пользователей, 250 признаков
  • Признаки: демографические (пол, возраст), стаж пользователя, количество приобретений по категориям, implicit-признаки, отзывы на товар, CTR, запрос на скидку
  • Ограничения: вычислительная мощность системы
  • Онлайн-метрики: CTR, CR, ROI, средний чек (по категориям)
  • Масштаб: высокая частота изменения данных

Формулировка задачи ML

  • Максимизировать CTR, CR, повысить средний чек
  • Вход: признаки пользователей
  • Выход: список релевантных продуктов

Модели

  • User-based CF
  • Item-based CF
  • ALS

Метрики

Бизнес: количество продаж, revenue

Офлайн: Recall@k, Precision@k, MAP, NDCG, MRR

Онлайн: CTR, CR, ROI, средний чек (по категориям)

A/B тест

  • Дрифт данных: отслеживание и обнаружение, мониторинг метрик, статистический контроль, детальное логирование
  • Адаптация модели: переобучение
  • Баланс групп
  • Период тестирования: месяц
  • Контроль внешних факторов: минимизировать влияние сезонных эффектов
  • Анализ разрезов по сегментам: новые пользователи, активные, разносторонние
  • Метрики: CTR
  • Статистические тесты: t-тест (значимость изменения метрик)
  • Положительный результат → разворачиваем на весь трафик
  • Отрицательный результат → доп. анализ, доработка модели, откат

Deploy

  • Feature Store, Airflow, Docker, CI/CD, FastAPI