Рекомендательные системы

Context-Aware Recommendations

YouTube в 2016 году оптимизировал рекомендации на watch time. Пользователи стали проводить больше времени на платформе, но в опросах говорили: «чувствую, что теряю время». В 2019 команда опубликовала работу о переходе на multi-task learning - совместную оптимизацию watch time, satisfaction и engagement. Контекстуальность и multi-objective стали стандартом индустрии.

  • **Netflix Content Scheduling** - разный контент рекомендуется в будни vs выходные; сезонные коллекции (летние блокбастеры, новогодние фильмы)
  • **Foursquare/Swarm** - time+location aware рекомендации мест; модель «утро у офиса = кофе»
  • **SASRec в Amazon** - self-attentive session рекомендации; стандартная baseline в e-commerce sequential rec

Предварительные знания

  • Коллаборативная фильтрация и матрица оценок «пользователь-товар»
  • Взаимодействия признаков и эмбеддинги из нейросетевых рекомендательных моделей
  • Дилемма explore-exploit, лежащая в основе бандитов
  • Collaborative Filtering
  • Deep Learning для рекомендаций

Factorization Machines и приход контекста

В 2010 году Steffen Rendle представил Factorization Machines - модель, которая обучает попарные взаимодействия между всеми признаками через общие латентные векторы. Прорыв был практическим: контекст вроде времени суток, локации, устройства или погоды можно добавить как обычные признаки рядом с id пользователя и товара, и модель всё равно оценит надёжные веса взаимодействий, даже если большинство комбинаций признаков ни разу не встречались. Это сделало контекст полноценным сигналом, а не дополнением, и превратило задачу предсказания оценки в общее предсказание на основе признаков. Factorization Machines лежат в основе значительной части context-aware рекомендаций и напрямую связаны с contextual bandits, где система также балансирует использование известных предпочтений и исследование нового контекста.

Временной контекст: сезонность и затухание интереса

Netflix анализировал паттерны просмотра и обнаружил: в будние вечера пользователи смотрят короткие эпизоды (20-30 мин), в выходные - полнометражные фильмы и многосерийные драмы. Один и тот же пользователь хочет разный контент в зависимости от времени. Контекстно-независимая рекомендательная система это слепая зона.

**Seasonality vs Short-term patterns:** сезонность (лето → пляжные фильмы, декабрь → праздничный контент) - долгосрочный тренд. Circadian patterns (утро → подкасты, вечер → сериалы) - краткосрочный. Модель должна захватывать оба уровня через разные features или multi-scale архитектуру.

Зачем кодировать час дня через sin/cos, а не как число 0-23?

Location-Aware: гео-контекст и локальная релевантность

Foursquare в 2012 году обнаружил: пользователь в 8:00 утром рядом со своим офисом с большой вероятностью ищет кофе. Тот же пользователь в 19:00 в том же районе - скорее всего ищет бар или ресторан. Локация и время вместе создают контекст, который ни одна из переменных в одиночку не описывает.

**Home vs Office vs Traveling:** один пользователь имеет несколько «локальных контекстов». Кластеризация посещённых мест (k-means по геокоординатам) позволяет определить: дом, офис, спортзал, «путешествие». Контент для каждого кластера отличается.

Почему location-aware рекомендации требуют учёта ВРЕМЕНИ, а не только координат?

Session-Based Recommendations: моделирование краткосрочного намерения

Классический collaborative filtering использует всю историю пользователя. Но намерение пользователя **внутри сессии** меняется: зашёл за кроссовками - через 5 кликов смотрит носки и шорты. Session-based рекомендации моделируют текущий intent через последовательность действий в сессии, игнорируя долгосрочную историю.

МодельАрхитектураПреимуществоНедостаток
GRU4Rec (2016)GRUЭффективна для коротких сессийПлохо захватывает дальние зависимости
SASRec (2018)Transformer (causal)Дальние зависимости, параллельное обучениеБольше параметров, медленнее
BERT4Rec (2019)BERT (bidirectional)Контекст в обе стороныНельзя использовать напрямую в online inference
FMLP-Rec (2022)MLP + FFTБыстрее Transformer, конкурентное качествоМенее изучена

Чем session-based рекомендации отличаются от классического collaborative filtering?

Multi-Task Learning: совместная оптимизация нескольких целей

YouTube в 2019 году обнаружил: оптимизация только на клики (CTR) продвигала кликбейт. Оптимизация только на время просмотра - длинные скучные видео. **Multi-task learning** решает это: совместная оптимизация CTR + watch time + like probability + «не жалею о просмотре» одновременно дала контент, который пользователи реально хотели видеть.

**Задачи при MTL:** CTR (кликабельность), CVR (конверсия), watch time, skip rate, like/share/save. Каждая задача имеет свои labels и loss. Итоговый скоринг - взвешенная комбинация всех задач: `score = w1*CTR + w2*watch_time - w3*skip_rate`. Веса подбираются A/B тестами.

Multi-task learning усложняет систему без реального выигрыша - лучше сделать несколько специализированных моделей.

MTL улучшает качество каждой задачи через shared representations: сигнал от одной задачи помогает другой. MMOE позволяет задачам иметь разные веса экспертов - задачи-конфликты получают разные специализированные пути. Один inference vs N независимых моделей = меньше latency.

Shared lower layers в MTL работают как regularization - редкие сигналы (likes) получают больше обучающего сигнала через shared features с частыми событиями (clicks). N отдельных моделей не имеют этого эффекта.

YouTube перешёл на multi-task learning (CTR + watch time + satisfaction). Почему оптимизация только CTR недостаточна?

Context-Aware Recommendations

  • **Временной контекст:** sin/cos кодирование часа/дня для цикличности; time decay снижает вес старых взаимодействий; seasonality vs circadian patterns
  • **Location context:** haversine расстояние + geohash для фильтрации; home/office/travel кластеризация; time+location вместе сильнее каждого по отдельности
  • **Session-based:** GRU4Rec (2016, RNN) → SASRec (2018, self-attention); текущее намерение важнее долгосрочной истории для краткосрочных сессий
  • **Multi-task learning:** MMOE - shared experts + task-specific gates; CTR + watch time + satisfaction; joint optimization лучше N отдельных моделей

Связанные темы

Context-aware рекомендации строятся на базовых алгоритмах и обогащают их контекстом.

  • Multi-Objective и Re-Ranking — Multi-task scores нужно сбалансировать при финальном ранжировании
  • Matrix Factorization — Контекстные факторы добавляются в MF как дополнительные измерения (CAMF, CARS)

Вопросы для размышления

  • Как session-based и long-term history рекомендации дополняют друг друга - в каких сценариях каждый подход превосходит другой?
  • Какие негативные последствия может иметь агрессивная оптимизация на watch time без учёта satisfaction метрик?
  • Почему MMOE лучше обычного shared-bottom MTL при наличии конфликтующих задач (например, CTR vs dwell time)?

Связанные уроки

  • rec-04 — Глубокие модели - база для контекстных рекомендаций
  • rec-05 — Сессии развивают идеи последовательных рекомендаций
  • rec-08 — Мультизадачные скоры идут в стадию реранкинга
  • ml-30-rnn-lstm — GRU4Rec использует RNN по событиям сессии
  • stat-13-time-series — Временной контекст похож на структуру временных рядов
  • ml-01-intro
Context-Aware Recommendations

0

1

Войти