Почему сессионные рекомендации важны

Большинство посетителей интернет-магазина — анонимы. Авторизованных пользователей с накопленной историей может быть 20–40% трафика; остальные 60–80% заходят без аккаунта или первый раз. Персональные рекомендации для них недоступны — нет профиля.

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

Алгоритмический стек

Эволюция алгоритмов сессионных рекомендаций:

Алгоритм Основа Особенность
Item-based KNN Паттерны совместных просмотров Простой, интерпретируемый
GRU4Rec Рекуррентные нейросети (RNN) Учитывает последовательность событий
BERT4Rec Трансформер (self-attention) Понимает контекст всей сессии
NARM RNN + attention Баланс локального и глобального контекста

На практике большинство production-систем используют более простые алгоритмы с быстрым инференсом — BERT4Rec требует значительных вычислительных ресурсов при каждом обновлении рекомендации.

Как сессионный алгоритм строит прогноз

Сессия пользователя:
  t=0: открыл карточку "Кроссовки Nike Air Max 270"
  t=1: просмотрел "Кроссовки Adidas Ultraboost"
  t=2: добавил в корзину "Кроссовки Nike Air Max 270"

Алгоритм:
  → Текущий интерес: мужские кроссовки, городской стиль, средний-высокий ценовой сегмент
  → Сигнал корзины усиливает намерение купить Nike
  → Рекомендации: аналогичные кроссовки, носки, средство для ухода за обувью

Каждое новое событие пересчитывает вектор намерения пользователя в сессии.

Совмещение с долгосрочным профилем

Для авторизованных пользователей оптимальная архитектура — гибридная:

  • Сессионный сигнал (высокий вес): что смотрит прямо сейчас — отражает немедленное намерение
  • Долгосрочный профиль (средний вес): категорийные предпочтения, история покупок
  • Популярность (низкий вес): fallback при слабых персональных сигналах

Вес компонентов настраивается и может тестироваться через A/B.

Совет: сессионные рекомендации особенно эффективны в блоках на карточке товара («Похожие товары», «С этим смотрят») — там пользователь уже показал явное намерение, и алгоритм может его развить в конкретном направлении.