Рекомендательная технология Диско

26 июня 2015, 11:01
Современный мир предлагает человеку множество товаров, услуг и развлечений. Богатый выбор — это хорошо, но, когда ассортимент слишком широк, сложно остановиться на чём-то одном. На то, чтобы купить пылесос или даже просто выбрать фильм на вечер, уходит много времени и сил. Приходится читать отзывы, сравнивать описания и характеристики или спрашивать совета у друзей. Поэтому становится необходимой возможность не просто найти нужный объект — например, фильм, товар или музыкальный трек, — а быстро и просто выбрать из миллионов похожих объектов подходящий.

Чтобы сделать выбор и принять решение было проще, придуманы системы персональных рекомендаций. Их задача — сузить предложение до вариантов, которые с наибольшей вероятностью подойдут конкретному человеку. В основе подобных систем лежат сложные рекомендательные технологии. В Яндексе для таких случаев разработана технология Диско. Она используется в сервисах с крупными каталогами объектов — в Музыке, Радио, Маркете и Видео.

Название технологии было выбрано в честь музыкального жанра диско. Треки в этом жанре можно послушать на Яндекс.Музыке. Именно на этом сервисе Яндекса впервые появились рекомендации — это произошло в сентябре 2014 года. Кроме того, слово «диско» созвучно английскому слову discovery, которое означает «открытие нового» и хорошо описывает суть технологии.

Выявление предпочтений

Прежде чем что-либо советовать человеку, стоит уточнить его вкусы и предпочтения. Узнать о них Диско может из нескольких источников. Во-первых, это поисковые запросы — они могут рассказать о текущих интересах. Во-вторых, это данные от технологии Крипта: пол, примерный возраст и род занятий. Они позволяют не рекомендовать человеку то, что ему заведомо не понравится. Скажем, 15-летней девочке, которая увлекается аквааэробикой, не стоит советовать музыку в жанре шансон. Наконец, это сведения от сервиса, для которого составляются рекомендации. Например, в Маркете это информация о том, какие товары просматривал человек, а в Музыке и Радио — какие треки он слушал. Само собой, все данные обезличены.

Сигналы о предпочтениях пользователя могут быть положительными и отрицательными. Например, в Яндекс.Радио и Яндекс.Музыке композиции, которые пришлись не по душе, можно пропускать или отмечать оценкой «не нравится». Это отрицательный сигнал — он говорит о том, что в дальнейшем человеку такую музыку рекомендовать не надо. Кроме того, сигналы могут отличаться по весу. И оценка «мне нравится», и факт прослушивания трека от начала до конца являются положительными сигналами, но у первого вес будет больше.

Составление рекомендаций

Составляя рекомендации, Диско использует три разных подхода. Первый подход опирается на информацию об объектах и связях между ними. Например, про любой музыкальный трек известно, на каком альбоме он вышел, кто его исполняет и к какому жанру он относится, а про любой товар — кто его производитель, каковы его характеристики и к какой категории товаров он принадлежит. Проанализировав связи, можно посоветовать пользователю объекты, родственные тому, чем он уже интересовался. Скажем, если человек часто слушает прогрессивный рок, ему можно предложить другие треки этого жанра, а если человек купил плиту и холодильник одного и того же производителя, а сейчас подбирает микроволновку, его, скорее всего, заинтересуют модели, выпущенные этой же компанией.

В основе второго подхода лежит информация о связях между людьми. Благодаря Крипте известны пол, примерный возраст и предположительный род занятий каждого пользователя. Установлено, что людей, у которых эти характеристики совпадают, часто интересуют одни и те же объекты. Даже если человек пользуется сервисом впервые и ещё не успел ничего посмотреть, послушать или приобрести, можно проверить, что смотрят, слушают или покупают люди со схожими характеристиками — и предложить ему эти же объекты.

Третий подход использует данные о взаимодействиях пользователей с объектами. Взаимодействием можно считать, например, факт просмотра видеоролика или оценку «нравится», поставленную музыкальному треку. Подход (в теории рекомендательных систем он известен как SVD — singular value decomposition, или сингулярное разложение) позволяет, опираясь на уже известные взаимодействия, предсказать, как пользователи отреагируют на те или иные объекты — например, какую оценку они поставят фильму, который пока не видели.


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

На этих трёх подходах основаны все рекомендательные модели, которые используются в Диско. Таких моделей насчитывается несколько сотен, и все они работают по-разному: одна составляет рекомендации с учётом музыкального жанра, вторая — с учётом бренда товаров, и так далее. Каждая модель на вход принимает набор параметров, а на выходе выдаёт список рекомендаций.

Обработка рекомендаций

Все рекомендации от различных моделей обрабатывает метод машинного обучения Матрикснет. Его задача — составить сочетание рекомендаций, которое бы идеально соответствовало интересам пользователя в данный момент.

Решая эту задачу, Матрикснет учитывает множество факторов. Например, фактор разнообразия — людям, у которых в плейлистах соседствуют треки разных жанров и исполнителей, стоит советовать более разнообразную музыку, чем тем, кто привык включать альбом и слушать его от начала до конца. Или фактор популярности — кто-то предпочитает слушать музыку, которую часто крутят радиостанции, а кто-то любит редкие треки, которые известны только узкому кругу меломанов.

Результат работы Матрикснета — финальный список рекомендаций. Его пользователь и видит на сервисе — например, на главной странице Яндекс.Музыки или в разделе «Популярные товары» на Яндекс.Маркете.
12 комментариев
Подписаться на комментарии к посту
Как к Вам в команду разработки попасть? Такими интересными технологиями заниматься моя мечта )))
Олег Шевелев
27 июня 2015, 10:24
AlexanderKarpik,
недавно они уволили нескольких человек заменив их этой системой, не стремитесь туда ге будут делать что-то для вас, стремитесь быть тем кто делает что-то сам и для всех кто этого заслуживает. Удачных вам выходных:)
Александр, присылайте свое резюме на lamburt(at)yandex-team.ru
спасибо, ребята, за вашу работу! это правда круто и полезно!
какие же вы крутые! ))
Алексей Березкин
8 сентября 2015, 14:33
Не хватает кнопки «нравится, но пропустить». Например, если я это уже слушал недавно или еще какая причина.
Алексей Березкин,
не хватает кнопки "не нравится" для исполнителей
Как удалить исполнителя из рекомендаций навсегда? Как удалить жанр из рекомендаций навсегда?
Спасибо, очень крутой сервис - постоянно слушаю ваше радио! Заметил существенное улучшение в моих рекомендациях за прошедшую неделю.

Как часто вы пересчитываете данные ? Не уверен что это возможно сделать после каждого взаимодействия..
Здравствуйте!
Не нашел куда писать по поводу Диско. С кем можно связаться или куда отправить свой репорт?
Подскажите, пожалуйста.
Света Чистякова
3 октября 2016, 14:02
Дмитрий,
здравствуйте. Если вы хотите сообщить об ошибке в лентах музыкальных рекомендаций, то вот сюда.
Света Чистякова,
спасибо, а это для всего подходит? Т.е. конкретно интересует больше не подборки от Я.Музыки, а работа Я.Радио, со временем начинает портить трек лист, если раньше нажимал дислайк раз месяц, то теперь по нескольку раз на дню доходит.