🏢 Ситуация
Большой квартальный проект. Виктор (CTO) на кике:
«Блок "Вам может понравиться" на главной приносит 4% выручки, и он сейчас — просто топ продаж, одинаковый для всех. Конкуренты делают персонализацию и растят конверсию на 15–20%. Делаем свою рекомендательную систему. Датасет: 2 млн пользователей, 300 тысяч товаров, история просмотров и покупок.»
Лена распределяет роли: вы отвечаете за модель-кандидат и офлайн-метрики.
🎯 Ваша задача
- Понять подходы: попьюлярити, коллаборативная фильтрация, контентные модели.
- Освоить матричную факторизацию (ALS) и implicit feedback.
- Померить качество ранжирования: precision@k, recall@k, NDCG.
📚 Теория
Три семейства рекомендаций
- Неперсональные: топ продаж, тренды. Бейзлайн, который обязан быть в сравнении. Для новых пользователей — часто единственный вариант.
- Коллаборативная фильтрация (CF): «похожие пользователи покупают похожее». Работает только на поведении, не требует описаний товаров. Слабость — холодный старт (новый товар/пользователь без истории).
- Контентные: рекомендуем похожее по атрибутам (категория, бренд, текст описания, картинка). Решают холодный старт для товаров.
Продакшен-системы — гибрид: двухэтапная архитектура: сначала лёгкая модель отбирает сотни кандидатов (retrieval), потом тяжёлая модель точно ранжирует (ranking). Так работают YouTube, Amazon и все крупные маркетплейсы.
Матричная факторизация
Матрица «пользователи × товары» с оценками взаимодействий гигантская и на 99.99% пустая. Идея: разложить её в произведение двух узких матриц — эмбеддинги пользователей U (n×k) и товаров V (m×k), k ≈ 32–256. Скор товара для пользователя = скалярное произведение векторов. Похожие вкусы → близкие векторы.
Explicit vs implicit feedback
- Explicit: оценки 1–5. Редкость в e-commerce.
- Implicit: просмотры, корзина, покупки. Здесь нет «негативов»: отсутствие покупки ≠ «не нравится», может просто не видел. Для implicit используют специальные методы (ALS с весами уверенности, BPR).
Метрики ранжирования
Пользователь видит топ-K (например, 10 позиций) — важно качество верха списка:
- precision@k — доля релевантных в топ-k;
- recall@k — доля найденных из всех релевантных;
- NDCG@k — учитывает позицию: релевантный товар на 1-м месте ценнее, чем на 10-м;
- coverage/novelty — не рекомендуем ли всем одно и то же.
Валидация — по времени: обучаемся на истории до даты T, проверяем покупки после T.