Все люди, вне зависимости от того, какую музыку они любят и сколько часов в день проводят в наушниках, иногда сталкиваются с одной и той же проблемой: личная фонотека заслушана до дыр и хочется чего-нибудь новенького. С одной стороны, выбор огромен — музыкальные каталоги в интернете насчитывают десятки миллионов треков и пополняются каждый день. С другой стороны, сориентироваться в этом разнообразии бывает непросто: музыки много, а вы один.
С сентября 2014 года в Яндекс.Музыке работает система музыкальных рекомендаций. Она даёт ответы на вопрос «Что бы ещё послушать?». У системы есть две ключевые особенности. Во-первых, её советы персональны — то есть составляются с учётом интересов каждого конкретного пользователя. А во-вторых, система самообучается: чем больше вы слушаете музыку, тем точнее будут рекомендации.
Как выявляются предпочтения
Прежде чем советовать пользователю ту или иную музыку, необходимо составить представление о его музыкальных вкусах. Самый простой способ сделать это — посмотреть, какие треки на Яндекс.Музыке он уже послушал. Это самая важная информация для рекомендательной системы; по истории прослушиваний можно установить, каких исполнителей и какие жанры человек предпочитает. Однако чтобы составить более полную картину, неплохо ещё понимать, что ему нравится больше, а что — меньше.
Для этого мы используем дополнительные данные. Один из источников таких данных — оценки «Нравится» и «Не нравится», которые ставят пользователи. Оценку «Нравится» в Яндекс.Музыке можно ставить трекам, альбомам, исполнителям и целым музыкальным жанрам. Оценка «Не нравится» есть в жанровом радио и в радио по исполнителю: с её помощью можно отметить треки, которые пришлись не по душе.
Как правило, люди оценивают музыку, которая вызвала у них сильный эмоциональный отклик — неважно, положительный или отрицательный. Поэтому оценки довольно точно отражают пристрастия человека. Но одних оценок недостаточно: во-первых, люди ставят их далеко не всегда, а во-вторых, в шкале не хватает полутонов — есть только или «хорошо» («Нравится»), или «плохо» («Не нравится»).
Поэтому, помимо оценок и прослушиваний, мы обращаем внимание и на другие действия пользователя: пропуски треков (например, в альбоме, подборке или радио) и добавления треков в плейлисты.
Все действия мы разделяем на положительные и отрицательные. Положительные — прослушивание, оценка «Нравится», добавление в плейлист — говорят о том, что музыка нравится пользователю, а отрицательные — пропуск и оценка «Не нравится» — наоборот. Важно понимать, что действия неравнозначны: например, пользователь может пропустить трек, который в целом ему по душе, но сейчас не подходит под настроение. Поэтому каждому действию мы присваиваем вес: у оценки «Нравится» он максимальный, а у пропуска — минимальный.
Как строится прогноз
Алгоритм анализирует профиль пользователя (то есть данные о его музыкальных предпочтениях) и предсказывает, какие треки и исполнители могут ему понравиться. Кроме того, алгоритм умеет дообучаться в режиме реального времени. Каждый раз, когда вы совершаете новое действие — слушаете трек или добавляете его в плейлист, — профиль обновляется, и прогноз строится заново. Это позволяет быстро подстраиваться под вкусы и предлагать музыку, которая отвечает сегодняшнему настроению.
Делая прогноз, алгоритм также учитывает информацию о том, как связаны друг с другом объекты из каталога Яндекс.Музыки: треки, альбомы, исполнители, жанры. Благодаря этим данным можно советовать человеку новых исполнителей в его любимом жанре. Кроме того, система сравнивает профили всех пользователей Яндекс.Музыки. Это делается для того, чтобы выявить людей со схожими музыкальными предпочтениями: то, что нравится одному, может понравиться и другому.
Как составляются рекомендации
Обработав данные, алгоритм выдаёт список треков и исполнителей, которые могут понравиться пользователю. Считать его окончательной рекомендацией, однако, нельзя. Во-первых, список слишком длинный — чтобы прослушать все треки, которые система выбрала за раз, не хватит и суток. Во-вторых, мы считаем, что рекомендации должны быть разнообразными: они должны включать в себя не только советы вида «раз вам понравилось X, послушайте Y», но и что-то ещё, что помогло бы сориентироваться в мире музыки — скажем, сообщения о новых релизах любимых исполнителей или чарты треков в жанрах, которые вам нравятся.
Поэтому прогноз, построенный алгоритмом на основе профиля пользователя, мы «разбавляем» информацией из других источников. Это могут быть сведения о том, что слушают друзья из социальных сетей, актуальные подборки — саундтрек к только что вышедшему фильму или сборник композиций, прозвучавших на недавнем музыкальном фестивале, — или списки треков, которые рекомендуют любимые исполнители.
Окончательный список рекомендаций составляется с помощью Матрикснета — разработанного в Яндексе метода машинного обучения. Матрикснет обрабатывает список всех возможных рекомендаций — как полученных прогнозированием, так и составленных по другим источникам — и определяет, какие именно следует показать пользователю на главной странице Яндекс.Музыки и в каком порядке их расположить. Формула, по которой составляется лента рекомендаций, учитывает множество факторов — от сведений о том, сколько раз человек прослушал тот или иной трек, до времени суток: бывает так, что утром нравится одна музыка, а вечером — другая.
***
Задача рекомендаций в Яндекс.Музыке — помогать людям открывать для себя новую музыку. Новую не значит современную — система может посоветовать вам и треки, выпущенные в этом году, и музыку, написанную в XVIII веке. Главное — это будет музыка, которую вы ещё не слышали, но которая вам, скорее всего, понравится.
Как это работает? Рекомендации в Яндекс.Музыке
20 марта 2015, 13:34