Назад к подготовке

Как построить рекомендации треков по истории прослушиваний

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

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Начать с implicit collaborative filtering: user-item матрица по прослушиваниям, likes/skips, ALS/BPR/item2item. Добавить popular/recency fallback, фильтры уже прослушанного и позже реранжирование с контекстом сессии.

Полный разбор

Если есть только история прослушиваний, первый baseline - implicit feedback. События нужно взвесить: полное прослушивание сильнее короткого skip, like сильнее обычного play, повторные прослушивания можно логарифмировать. Дальше подойдут ALS, BPR, item-to-item co-occurrence или простой nearest-neighbor по item embeddings.

Для выдачи нужна генерация кандидатов: похожие треки, популярное в сегменте, свежее, editorial/business rules. После этого можно делать реранжирование: не повторять только что прослушанное, добавить diversity по артистам/жанрам, учитывать устройство, время дня, контекст сессии и skip history.

Cold start решается fallback-ами и content features: жанр, артист, аудио embeddings, текст/метаданные. Даже если первая версия коллаборативная, архитектура должна позволять позже добавить content-based кандидатов.

Теория

Музыкальный RecSys начинается с implicit feedback, но быстро упирается в freshness, diversity и cold start.

Типичные ошибки

  • Считать все прослушивания одинаково полезными.
  • Не фильтровать повторы и уже прослушанные треки.
  • Не иметь fallback для новых пользователей и новых треков.