Офтоп Konstantin Panphilov
5 454

Как работает рекомендательная система «Яндекс.Музыки»

«Яндекс» в своём блоге опубликовал материал о принципах работы системы рекомендаций в сервисе «Яндекс.Музыка», которая работает с сентября 2014 года. Алгоритм даёт пользователю персональные рекомендации и со временем обучается, основываясь на его вкусах.

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

Прежде чем советовать пользователю ту или иную музыку, необходимо составить представление о его музыкальных вкусах. Самый простой способ сделать это — посмотреть, какие треки на «Яндекс.Музыке» он уже послушал. Это самая важная информация для рекомендательной системы; по истории прослушиваний можно установить, каких исполнителей и какие жанры человек предпочитает. Однако чтобы составить более полную картину, неплохо ещё понимать, что ему нравится больше, а что — меньше.

Для этого мы используем дополнительные данные. Один из источников таких данных — оценки «Нравится» и «Не нравится», которые ставят пользователи. Оценку «Нравится» в «Яндекс.Музыке» можно ставить трекам, альбомам, исполнителям и целым музыкальным жанрам. Оценка «Не нравится» есть в жанровом радио и в радио по исполнителю: с её помощью можно отметить треки, которые пришлись не по душе.

Как правило, люди оценивают музыку, которая вызвала у них сильный эмоциональный отклик — неважно, положительный или отрицательный. Поэтому оценки довольно точно отражают пристрастия человека. Но одних оценок недостаточно: во-первых, люди ставят их далеко не всегда, а во-вторых, в шкале не хватает полутонов — есть только или «хорошо» («Нравится»), или «плохо» («Не нравится»).

Поэтому, помимо оценок и прослушиваний, мы обращаем внимание и на другие действия пользователя: пропуски треков (например, в альбоме, подборке или радио) и добавления треков в плейлисты.

Все действия мы разделяем на положительные и отрицательные. Положительные — прослушивание, оценка «Нравится», добавление в плейлист — говорят о том, что музыка нравится пользователю, а отрицательные — пропуск и оценка «Не нравится» — наоборот. Важно понимать, что действия неравнозначны: например, пользователь может пропустить трек, который в целом ему по душе, но сейчас не подходит под настроение. Поэтому каждому действию мы присваиваем вес: у оценки «Нравится» он максимальный, а у пропуска — минимальный.

Как строится прогноз

Алгоритм анализирует профиль пользователя (то есть данные о его музыкальных предпочтениях) и предсказывает, какие треки и исполнители могут ему понравиться. Кроме того, алгоритм умеет дообучаться в режиме реального времени. Каждый раз, когда вы совершаете новое действие — слушаете трек или добавляете его в плейлист, — профиль обновляется, и прогноз строится заново. Это позволяет быстро подстраиваться под вкусы и предлагать музыку, которая отвечает сегодняшнему настроению.

Делая прогноз, алгоритм также учитывает информацию о том, как связаны друг с другом объекты из каталога «Яндекс.Музыки»: треки, альбомы, исполнители, жанры. Благодаря этим данным можно советовать человеку новых исполнителей в его любимом жанре. Кроме того, система сравнивает профили всех пользователей «Яндекс.Музыки». Это делается для того, чтобы выявить людей со схожими музыкальными предпочтениями: то, что нравится одному, может понравиться и другому.

Как составляются рекомендации

Обработав данные, алгоритм выдаёт список треков и исполнителей, которые могут понравиться пользователю. Считать его окончательной рекомендацией, однако, нельзя. Во-первых, список слишком длинный — чтобы прослушать все треки, которые система выбрала за раз, не хватит и суток. Во-вторых, мы считаем, что рекомендации должны быть разнообразными: они должны включать в себя не только советы вида «раз вам понравилось X, послушайте Y», но и что-то ещё, что помогло бы сориентироваться в мире музыки — скажем, сообщения о новых релизах любимых исполнителей или чарты треков в жанрах, которые вам нравятся.

Поэтому прогноз, построенный алгоритмом на основе профиля пользователя, мы «разбавляем» информацией из других источников. Это могут быть сведения о том, что слушают друзья из социальных сетей, актуальные подборки — саундтрек к только что вышедшему фильму или сборник композиций, прозвучавших на недавнем музыкальном фестивале, — или списки треков, которые рекомендуют любимые исполнители.

Окончательный список рекомендаций составляется с помощью «Матрикснета» — разработанного в «Яндексе» метода машинного обучения. «Матрикснет» обрабатывает список всех возможных рекомендаций — как полученных прогнозированием, так и составленных по другим источникам — и определяет, какие именно следует показать пользователю на главной странице «Яндекс.Музыки» и в каком порядке их расположить. Формула, по которой составляется лента рекомендаций, учитывает множество факторов — от сведений о том, сколько раз человек прослушал тот или иной трек, до времени суток: бывает так, что утром нравится одна музыка, а вечером — другая.

Задача рекомендаций в «Яндекс.Музыке» — помогать людям открывать для себя новую музыку. Новую не значит современную — система может посоветовать вам и треки, выпущенные в этом году, и музыку, написанную в XVIII веке. Главное — это будет музыка, которую вы ещё не слышали, но которая вам, скорее всего, понравится.

#яндекс #яндекс_музыка #рекомендации #как_работает_яндекс_музыка

Статьи по теме
«Яндекс.Музыка» определила самых популярных музыкантов России
{ "author_name": "Konstantin Panphilov", "author_type": "editor", "tags": ["\u044f\u043d\u0434\u0435\u043a\u0441_\u043c\u0443\u0437\u044b\u043a\u0430","\u044f\u043d\u0434\u0435\u043a\u0441","\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438","\u043a\u0430\u043a_\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442_\u044f\u043d\u0434\u0435\u043a\u0441_\u043c\u0443\u0437\u044b\u043a\u0430"], "comments": 12, "likes": 14, "favorites": 1, "is_advertisement": false, "subsite_label": "flood", "id": 7303, "is_wide": true, "is_ugc": false, "date": "Fri, 20 Mar 2015 14:34:11 +0300" }
{ "id": 7303, "author_id": 3, "diff_limit": 1000, "urls": {"diff":"\/comments\/7303\/get","add":"\/comments\/7303\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/7303"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791, "possessions": [] }

12 комментариев 12 комм.

Популярные

По порядку

Написать комментарий...
6

Как работает рекомендательная система «Яндекс.Музыки» — да никак, она не работает

Ответить

2

а spotify, deezer ?

Ответить

2

Хорошо описано, я как ежедневный пользователь Яндекс.Музыки вижу одно и тоже. Наверное я как-то не так слушаю)

Ответить
2

++ тоже както пользовался и в итоге пришел к выводу, что там просто рекламируют определенные группы и ничего подобного из сего нету. Хорошо если бы сделали

Ответить

2

Это не рассказ о том, как работает рекомендательная система. Узнать о том, как работает практически любая рекомендательная система, и Яндекс.Музыки в том числе, можно, например, прослушав этот курс - https://www.coursera.org/learn/recommender-systems

Ответить

1

Единственные у кого работает, это Pandora. У Spotify работает хуже, намного, но работает. У остальных не работает вовсе.

Ответить
1

на я.музыке не работает вообще эта рекомендательная+ малая база не шансона и русской попсы +нет "не нравится"-послушаешь кого-то чтобы понять по душе или нет,а потом его пихают
deezer также если слушал русскоязычных,то подсовывает ваенгу,круга и т.п. ("не нравится" хорошо что есть)

а рекомендательная самая нормальная только у Pandora/ редко когда прям фигню подсовывают

Ответить
1

У Яндекса та же проблема, что и у GoogleMusic и подобных - почти отсутствует база андеграунд-исполнителей и постоянная возня по одним и тем же трекам.

Ответить
1

Слушать периодически музыку на Яндексе, но ищу рекомендации на Last FM.

Ответить
1

Похоже, яндекс не учитывает музыку, которую я слушаю (а главное - слушал раньше) до перехода в я.музыку, а мог бы - данные моего ласт.фм у него есть. В остальном же рекомендациями я доволен настолько, что несколько раз в неделю слушаю в дороге именно рекомендации и уже открыл для себя несколько интересных исполнителей, до которых без этого еще хз когда дошел бы. Так что отзывы предыдущих ораторов "ни хрена не работает" вызывают у меня искреннее недоумение.

Ответить
0

ну чо там норм нет? можно уже переходить со spotify в я.музыку?

Ответить
0

Яндекс просканировал мою музыку из VK, и теперь каждый день суёт её как новую.

Иногда встречаются офигенные инди-группы, о которых я даже и не знал.

А вообще, странно он рекомендует. Иногда целый день дабстеп, иногда весь день какая-то попса, иногда шансон. wtf? Хорошо хоть русский рэпчик не суёт.

Ответить

0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Приложение-плацебо скачали
больше миллиона раз
Подписаться на push-уведомления
{ "page_type": "default" }