Что такое рекомендательная система

Задача рекомендательной системы формулируется просто: из каталога в десятки или сотни тысяч SKU выбрать 4–12 позиций, которые стоит показать конкретному пользователю в конкретном месте страницы. Всё остальное — детали реализации этого отбора.

Формально система оценивает функцию релевантности:

score(user, item, context) → вещественное число

user    — профиль: история просмотров, покупок, аффинити к брендам и ценам
item    — товар: атрибуты из фида, статистика взаимодействий, наличие
context — место размещения, текущая категория, устройство, товар-якорь

Дальше кандидаты сортируются по скору, из них вычитаются недоступные и запрещённые правилами позиции, и верхние N попадают в рекомендательный виджет.

Важное следствие: рекомендательная система — не одна модель, а конвейер. Смена алгоритма меняет качество на единицы процентов, а починка фида или добавление фильтра по наличию — на десятки.

Классы алгоритмов

Класс На чём строится Сильная сторона Ограничение
Коллаборативная фильтрация Матрица «пользователь × товар» Находит неочевидные связи между товарами Не работает для новых товаров и пользователей
Контентная фильтрация Атрибуты и текстовые описания товаров Работает с первого дня жизни SKU Замыкает выдачу в узком круге похожих позиций
Матричная факторизация Разложение матрицы взаимодействий на латентные факторы Компактность, устойчивость к разреженности Не учитывает контекст и последовательность
Векторные модели (эмбеддинги) Векторы товаров, обученные на последовательностях Схожесть по реальному поведению, а не по описанию Требует объёма данных и регулярного переобучения
Two-tower Отдельные энкодеры пользователя и товара Быстрый поиск кандидатов по вектору Сложность обучения и инфраструктуры
Гибридные Взвешенная комбинация нескольких источников Устойчивость на всех сегментах трафика Сложнее отлаживать и объяснять

Коллаборативная фильтрация остаётся базовым классом для магазинов с накопленной историей. Content-based фильтрация обязательна там, где ассортимент быстро обновляется — fashion, книги, сезонные категории. Матричная факторизация и Item2Vec дают компактное векторное представление товаров, а two-tower модель отдельно кодирует пользователя и товар, что позволяет искать кандидатов приближённым поиском ближайших соседей.

Архитектура: кандидаты и переранжирование

Считать тяжёлую модель для каждого товара каталога на каждый запрос невозможно — бюджет ответа обычно измеряется десятками миллисекунд. Поэтому промышленные системы разделены на две стадии.

Каталог (100 000+ SKU)
        │
        ▼  Стадия 1: генерация кандидатов  (~5–15 мс)
   лёгкие источники: co-visit, векторный поиск, бестселлеры категории,
   история пользователя, правила категорийного менеджера
        │
        ▼  200–500 кандидатов
        ▼  Стадия 2: переранжирование      (~10–30 мс)
   тяжёлая модель + бизнес-логика:
   маржинальность, наличие, дедупликация брендов, разнообразие
        │
        ▼  Стадия 3: пост-обработка
   мерчандайзинговые правила, фиксированные позиции, исключения
        │
        ▼  4–12 товаров в виджете

Переранжирование — то место, где алгоритмическая релевантность встречается с бизнес-требованиями. Именно здесь ограничивается доля одного бренда в выдаче, поднимаются товары с высокой маржой и вычищаются позиции, которых нет на складе.

Разделение на стадии полезно и организационно: смена модели переранжирования не требует перестройки источников кандидатов, а добавление нового источника не ломает существующее ранжирование. Это позволяет улучшать систему инкрементально.

Метрики: оффлайн и онлайн

Оффлайн-метрики считаются на исторических данных: модель предсказывает, с чем пользователь взаимодействовал в отложенном периоде, и предсказание сравнивается с фактом.

Метрика Что измеряет Зачем нужна
Precision@k Доля релевантных среди k выданных Точность короткой выдачи
Recall@k Доля найденных релевантных из всех релевантных Полнота охвата интересов
NDCG Качество порядка с учётом позиции Учитывает, что верхние позиции важнее
Coverage Доля каталога, попадающая в рекомендации Защита от вырождения в топ-100 бестселлеров
Diversity Разнородность выдачи внутри блока Защита от «10 почти одинаковых футболок»
Novelty Доля товаров, неизвестных пользователю Баланс между узнаваемым и новым

Онлайн-метрики считаются в A/B-тесте на живом трафике и имеют приоритет при любом расхождении:

Метрика Как считается Комментарий
CTR виджета Клики / показы виджета Быстрая, но не связана с деньгами напрямую
CR из виджета Заказы с товаром из виджета / показы Ближе к результату, чувствительна к атрибуции
RPV Выручка / уникальных посетителей Основная метрика для сравнения стратегий
Атрибутированная выручка Выручка с товаров, взаимодействовавших с рекомендациями Зависит от окна атрибуции — фиксируйте его заранее

Хорошая оффлайн-метрика при плохом онлайн-результате — обычное дело. Оффлайн-оценка вознаграждает предсказание того, что пользователь и так бы нашёл; бизнесу нужен инкремент, который виден только в сравнении с контрольной группой. NDCG и точность с полнотой помогают отсеять заведомо слабые модели, но решение принимается по A/B-тесту.

Холодный старт и фолбэки

Холодный старт — не редкий сбой, а постоянное состояние части трафика. В типовом интернет-магазине заметная доля сессий приходится на посетителей без истории.

Тип холодного старта Решение
Новый пользователь Сессионные рекомендации по текущему визиту, популярное в категории входа, тренды
Новый товар Контентные признаки: бренд, категория, ценовой сегмент, текстовое описание
Новый проект Неперсональные стратегии + имплицитные сигналы с первых дней сбора
Редкая категория Агрегация статистики на уровень родительской категории

Обязательное требование к продакшену — детерминированный фолбэк. Если персональная стратегия вернула меньше позиций, чем нужно виджету, блок должен добираться бестселлерами, а не схлопываться в пустоту.

Карта раздела: где что применяется

Место размещения Типовая стратегия Основная метрика
Главная страница Персональные рекомендации, тренды, недавно просмотренные RPV сессии
Листинг категории Персональная сортировка, промоблоки CR категории
Карточка товара Похожие товары, аксессуары CTR, глубина просмотра
Корзина Часто покупают вместе AOV
Постпродажный экран Сопутствующие и расходники Повторные заказы
Поиск с нулевым результатом Контентные похожие товары Спасённые сессии

Смежные термины: стратегия рекомендаций описывает конфигурацию алгоритма для конкретного места, персональные рекомендации — частный случай подбора с учётом профиля, эмбеддинги и приближённый поиск ближайших соседей — техническая основа векторных стратегий.

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

  1. Оптимизация CTR вместо выручки. Блок «вы недавно смотрели» почти всегда выигрывает по CTR и почти никогда — по инкрементальной выручке: пользователь и так вернулся бы к этому товару.
  2. Отсутствие фильтра по наличию. Рекомендация недоступного товара стоит дороже, чем отсутствие рекомендации.
  3. Сравнение стратегий без A/B-теста. Последовательное включение стратегий по неделям смешивает эффект с сезонностью.
  4. Игнорирование разнообразия. Выдача из десяти вариантов одной модели формально релевантна и бесполезна.
  5. Один алгоритм на все места размещения. Логика подбора в корзине и на главной различается принципиально.
  6. Отсутствие переобучения. Модель, обученная на прошлогоднем ассортименте, деградирует незаметно — контролируйте покрытие каталога и долю рекомендаций из свежих поступлений.