Перейти к содержанию

Определение задачи рекомендательной системы

~4 минуты чтения

Предварительно: Подготовка к интервью MLSD | Метрики ранжирования

Рекомендательные системы генерируют до 35% выручки Amazon и 80% просмотров на Netflix. При каталоге в 10M товаров и 100M пользователей задача сводится к выбору 10-50 наиболее релевантных позиций из триллиона возможных пар user-item за менее чем 100ms. Ошибка в дизайне рекомендательного пайплайна стоит компании миллионы долларов ежедневно -- именно поэтому это один из самых частых кейсов на System Design интервью в FAANG.

Бизнес-контекст

Рекомендательная система (Recommendation System) -- это ML-система, которая предсказывает, какие товары/контент/пользователи будут наиболее релевантны для конкретного пользователя.

Примеры применения

Компания Что рекомендуют Бизнес-метрика
Netflix Фильмы и сериалы Watch time, Retention
Amazon Товары GMV, Conversion
Spotify Песни и плейлисты Listening time
YouTube Видео Watch time, Engagement
LinkedIn Люди, вакансии Connections, Applications

Постановка задачи

Функциональные требования

  1. Персонализация: Система должна учитывать предпочтения пользователя
  2. Real-time обновления: Учитывать недавние действия пользователя
  3. Разнообразие: Не рекомендовать только похожий контент (diversity)
  4. Объяснимость: Почему рекомендуем этот item (explainability)
  5. Cold Start: Работать для новых пользователей и items

Нефункциональные требования

Метрика Требование Обоснование
Latency (p99) < 100ms UX критичен
Throughput 100K RPS Высокая нагрузка
Availability 99.9% Критичный сервис
Freshness < 1 hour Актуальность рекомендаций

Масштаб системы

Users: 100M MAU
Items: 10M (каталог)
Interactions: 1B/day (views, clicks, purchases)
Features: 1000+ per user/item

Типы рекомендательных задач

1. Collaborative Filtering

  • User-based: "Пользователи, похожие на тебя, смотрели X"
  • Item-based: "Те, кто купил X, также купили Y"

2. Content-based Filtering

  • Рекомендации на основе атрибутов items
  • Не требует истории других пользователей

3. Hybrid Systems

  • Комбинация collaborative + content-based
  • Knowledge graphs + embeddings

Метрики успеха

Offline метрики

  • Precision@K: Доля релевантных среди топ-K
  • Recall@K: Покрытие релевантных items
  • NDCG: Качество ранжирования
  • MAP: Mean Average Precision
  • Hit Rate: Хотя бы 1 релевантный в топ-K

Online метрики

  • CTR: Click-through rate
  • Conversion Rate: Покупки/действия
  • Session Duration: Время в сервисе
  • Revenue: Прямой доход

Guardrail метрики

  • Coverage: % items, которые рекомендуются
  • Diversity: Разнообразие рекомендаций
  • Novelty: Новизна рекомендаций
  • Fairness: Справедливость для creators/sellers

Ключевые вопросы для уточнения на интервью

  1. Какой тип items? (товары, контент, люди)
  2. Какой объём каталога? (тысячи vs миллионы)
  3. Implicit vs Explicit feedback? (клики vs рейтинги)
  4. Требования к latency? (real-time vs batch)
  5. Cold start критичен? (много новых users/items)
  6. Нужна ли объяснимость? (почему рекомендуем)
  7. Какие данные доступны? (features, interactions)

Trade-offs

Аспект Вариант A Вариант B
Personalization vs Popularity Точные рекомендации Безопасные популярные
Exploration vs Exploitation Новое Проверенное
Latency vs Quality Быстро и просто Медленно но точно
Real-time vs Batch Свежесть Вычислительная эффективность

Заблуждение: Collaborative Filtering достаточно для production системы

Чистый CF покрывает только ~60% пользователей (остальные -- cold start). Netflix Prize показал, что победивший ансамбль SVD++ дал лишь +10% к RMSE, а в production Netflix использует гибридную систему с сотнями моделей. Collaborative filtering -- хорошая baseline, но не production решение.

Заблуждение: Главная метрика -- точность рекомендаций

YouTube обнаружил, что оптимизация только CTR привела к росту кликбейта и снижению watch time на 20%. Современные системы оптимизируют multi-objective: CTR + watch time + satisfaction + diversity. Метрика должна отражать долгосрочную ценность, а не краткосрочный клик.

Заблуждение: Можно ранжировать весь каталог одной моделью

При 10M items и 100ms latency budget ранжирование всех items deep-моделью потребует ~10 секунд. Поэтому стандарт индустрии -- двухэтапный пайплайн: быстрый retrieval (10M -> 1000) + точный ranking (1000 -> 50). Пропуск этапа candidate generation -- красный флаг на интервью.

Собеседование

Какие метрики использовать для рекомендательной системы?

❌ "CTR -- главная метрика, её и оптимизируем."

✅ "Метрики организованы в иерархию: North Star -- это бизнес-метрика (revenue, retention). Product-метрики (CTR, conversion, session duration) декомпозируют North Star. ML-метрики (NDCG@K, Recall@K) оценивают модель offline. Guardrail-метрики (coverage, diversity, latency) защищают от деградации. На A/B тесте проверяем primary metric + guardrails. Оптимизация только CTR опасна -- это путь к кликбейту."

Как спроектировать рекомендательный пайплайн?

❌ "Берём все items, прогоняем через нейросеть, выбираем top-N."

✅ "Стандартный пайплайн -- это воронка: Candidate Generation (10M -> 1000 за 10ms через ANN/Two-Tower), Coarse Ranking (1000 -> 200 через XGBoost), Fine Ranking (200 -> 50 через deep model), Filtering (бизнес-правила), Blending (diversity + exploration slots). Каждый этап уменьшает множество кандидатов и увеличивает точность скоринга. Параллельный retrieval из нескольких источников увеличивает recall."

Как решать проблему cold start?

❌ "Для новых пользователей показываем случайные товары."

✅ "Для новых пользователей: popularity-based рекомендации, затем demographic-based (возраст, страна), затем onboarding-опрос для быстрого профилирования. После 5-10 взаимодействий -- переход на персонализированные модели. Для новых items: content-based features (title embedding, image embedding, категория), exploration boost в 10% слотов, трансфер метрик от похожих items. Ключевое -- не ждать 100 кликов, а использовать multi-armed bandits (Thompson Sampling) для быстрого обучения."