Рекомендательные системы
Multi-Objective и Re-Ranking
Spotify Discover Weekly - 30 персонализированных треков каждый понедельник. Первая версия (2015) давала очень похожие треки: высокая relevance, нулевое разнообразие. Пользователи слушали первые несколько и закрывали. После добавления diversity-aware re-ranking completion rate вырос драматически - плейлист стал «ощущаться открытием», а не «тем же самым».
- **Spotify Discover Weekly** - diversity re-ranking для баланса между персонализацией и открытием нового
- **LinkedIn Feed** - fairness constraints: новые создатели контента получают гарантированный minimum exposure независимо от начального engagement
- **TikTok For You Page** - epsilon-greedy exploration: каждые N видео - exploration slot для нового контента без истории
Предварительные знания
- Ranking и scoring кандидатов
- Embeddings и cosine similarity
- Базовая вероятность (Beta-распределение, матожидание)
От Learning to Rank к Multi-Task Ranking
В 2005 году Chris Burges с коллегами в Microsoft Research опубликовали RankNet, нейросетевую learning-to-rank модель, обученную на попарных предпочтениях с вероятностной функцией стоимости. RankNet питал ранжирование Bing от Microsoft и положил начало современной эпохе learning-to-rank, за которой затем последовали LambdaRank и LambdaMART. Следующим скачком стало обучение многим целям сразу. В 2018 году Jiaqi Ma с коллегами в Google представили Multi-gate Mixture-of-Experts (MMoE), где общие эксперты комбинируются через gating-сети для каждой задачи, так что слабо связанные цели перестают конфликтовать друг с другом. В 2019 году Zhe Zhao и команда YouTube применили multi-task ranking в production, предсказывая цели вовлечённости и удовлетворённости вместе и добавив неглубокую башню для коррекции position bias. Именно эта архитектура позволяет одной ранжирующей модели балансировать клики, время просмотра и удовлетворённость на стадии re-ranking.
Diversity: почему 10 похожих рекомендаций хуже 10 разных
Spotify Discover Weekly в первых версиях давал 30 треков, очень похожих друг на друга - все из одного жанра, одного темпа. Пользователи слушали первые 5 и закрывали. После внедрения diversity-aware re-ranking плейлист начал «ощущаться свежим» - и completion rate вырос. Релевантность и разнообразие - разные оси качества.
**Maximal Marginal Relevance (MMR)** - алгоритм итеративного отбора, балансирующий relevance и novelty. На каждом шаге выбирается документ с максимальной разностью между релевантностью и сходством с уже выбранными.
**Submodular optimization:** diversity задачи часто submodular - добавление нового item даёт убывающий прирост разнообразия. Это позволяет использовать greedy алгоритмы (как MMR) с гарантией (1-1/e) ≈ 63% от оптимального решения при полиномиальной сложности.
MMR с параметром lambda=0 (минимум) приоритизирует:
Fairness: справедливость для провайдеров и пользователей
Spotify обнаружил: 90% прослушиваний приходится на 1% артистов - даже среди треков одинакового качества. Новые артисты практически не получают exposure. Это **provider fairness** - несправедливость для создателей контента. **User fairness** - когда система систематически хуже обслуживает меньшинства (users with niche tastes, non-English speakers).
| Тип fairness | Кто страдает | Метрика | Решение |
|---|---|---|---|
| Provider fairness | Новые/нишевые артисты | Exposure per group | Min-exposure constraints |
| User fairness | Пользователи с нишевыми вкусами | Error rate by group | Group-specific calibration |
| Disparate impact | Защищённые категории | DI ratio (>= 0.8) | Post-processing re-ranking |
| Popularity bias | Непопулярные items | Long-tail coverage | Exploration boost для новых |
Disparate impact ratio < 0.8 означает:
Exploration-Exploitation: бандиты для новых items
Cold-start проблема: новый трек на Spotify не имеет истории - collaborative filtering даёт ему нулевой скор. При epsilon-greedy с вероятностью ε рекомендуется случайный item (exploration), с вероятностью 1-ε - лучший по текущей оценке (exploitation). Thompson Sampling - байесовский подход без жёсткого ε.
**Когда какой метод:** epsilon-greedy прост, но неэффективен (constant exploration). Thompson Sampling адаптивен - высокая неопределённость → больше exploration, низкая → больше exploitation. LinUCB учитывает контекст пользователя - лучший выбор для персонализированного exploration.
Почему Thompson Sampling эффективнее epsilon-greedy при cold-start?
Business Rule Injection: реальность поверх ML
ML модель оптимизирует proxy-метрику. Бизнес имеет дополнительные требования: безопасность контента, лицензионные ограничения, спонсорский контент, юридические запреты по регионам. **Post-processing re-ranking layer** применяет эти правила после ML scoring - без переобучения модели.
**Архитектура re-ranking pipeline:** ML candidate generation (1000 items) → ML scoring & ranking → business rules post-processing → diversity re-ranking (MMR) → fairness constraints → final top-K. Каждый слой независим и может быть изменён без переобучения модели.
Diversity и fairness противоречат relevance - их нельзя оптимизировать одновременно.
Небольшое снижение relevance (+diversity, +fairness) часто повышает долгосрочное engagement и user satisfaction. MMR с lambda=0.7 обычно теряет 2-5% precision при +20-30% diversity. Это приемлемый trade-off для большинства продуктов.
Пользователи устают от filter bubble - однородный контент снижает сессионное engagement. Исследования Netflix и Spotify показали: diverse рекомендации увеличивают return rate пользователей.
Почему business rules применяются после ML scoring, а не как ограничения при обучении модели?
Multi-Objective и Re-Ranking
- **Diversity (MMR):** итеративный выбор: relevance - lambda * similarity_to_selected; submodular, greedy-алгоритм с (1-1/e) гарантией
- **Fairness:** provider fairness (exposure для новых), user fairness (equal quality for minorities), disparate impact ratio >= 0.8
- **Exploration:** epsilon-greedy (constant), Thompson Sampling (adaptive posterior), LinUCB (contextual) для cold-start items
- **Business rules post-processing:** лицензии, возраст, sponsored fraction - быстрые изменения без переобучения модели
Связанные темы
Re-ranking - финальный слой рекомендательного pipeline поверх retrieval и scoring.
- Context-Aware Recommendations — Multi-task scores из context-aware моделей - вход в re-ranking слой
- Candidate Generation — Re-ranking работает на топ-1000 из retrieval; качество retrieval ограничивает re-ranking
Вопросы для размышления
- Как выбрать lambda в MMR для конкретного продукта - какие данные нужны для обоснованного решения, а не интуитивного?
- Почему provider fairness (exposure для новых артистов) выгодна платформе в долгосрочной перспективе, даже если краткосрочно снижает engagement метрики?
- Как Thompson Sampling ведёт себя при наличии seasonality - нужно ли сбрасывать prior при смене сезона?
Связанные уроки
- rec-07 — Контекст дает сигналы, балансируемые при реранкинге
- rec-09 — Генерация кандидатов поставляет элементы для реранкинга
- rec-11 — Bandit-исследование управляет онлайн-выбором реранкинга
- ml-48-rl-intro — Исследование против эксплуатации идет из обучения с подкреплением
- stat-05-hypothesis — Проверки справедливости похожи на проверку гипотез
- ml-01-intro