Саша Море
3 287

Персонализация обложек на Netflix: машинное обучение и многорукие бандиты

Перевод материала от отдела разработки компании.

Поделиться

В избранное

В избранном

Одна из главных отличительных черт Netflix — система персонализованных рекомендаций. Благодаря ей каждый пользователь видит на главной странице в первую очередь те фильмы и сериалы, которые могут его заинтересовать.

Недавно в попытках улучшить пользовательский опыт сервис даже начал выбирать обложки для контента, больше подходящие каждому зрителю.

Отдел разработки Netflix рассказал, как работает алгоритм персонализации обложек.

Предложить подходящий контент — не единственная задача Netflix. Сервис должен заинтересовать пользователя, показать ему, что фильм или сериал отвечает его интересам и его стоит посмотреть.

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

Раньше на Netflix каждому фильму и сериалу соответствовала одна обложка. Какая именно — выбиралось по интересам зрителей: ставили ту, на которую больше раз кликнули. Но теперь разным пользователям демонстрируются разные изображения, зависящие от их предпочтений.

Например, если человек до этого смотрел романтические фильмы, то ему больше подойдёт обложка «Умницы Уилла Хантинга», на которой изображены Мэтт Дэймон и Минни Драйвер. А тот, кто любит комедии, скорее всего кликнет на картинку с Робином Уильямсом — известным комедийным актёром.

Разумеется, реальные сценарии использования обычно сложнее, поэтому правила персонализации создаются с помощью алгоритмов на основе пользовательских данных.

Сложности

На Netflix почти весь пользовательский опыт контролируется алгоритмами: какой контент показывается на главной странице, в каком порядке, какие сообщения приходят пользователю и так далее.

И у каждого аспекта персонализации есть свои сложности. Одна из проблем персонализации обложек — пользователю можно показать только одно изображение за раз. В случае с контентом зрителю предлагают сразу несколько вариантов, и из того, что человек выбирает, следуют выводы о его предпочтениях.

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

Ещё одна трудность — понять, насколько сильно влияет смена обложки продукта на поиск объекта. Мешает ли новая обложка снова найти тайтл на странице, если человек захотел его посмотреть? Решает ли пользователь включить сериал потому, что обложка сменилась на более интересную?

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

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

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

Метод контекстных бандитов

Большая часть движка рекомендаций Netflix построена на алгоритмах машинного обучения. Алгоритмы анализируют информацию о том, как зрители используют сервис, а затем эффективность новых алгоритмов проверяют с помощью A/B-тестов.

Зрители в группе А продолжают пользоваться старыми системами, а группа B получает новые. Если спустя время вовлечение подписчиков в группе B вырастает, то алгоритм распространяется на всю базу пользователей.

Но такой подход генерирует потери: пока проходит тестирование, огромная группа зрителей не получает преимуществ.

Чтобы снизить потери, Netflix перешёл с обучения на пакетах данных на онлайн-обучение. Для персонализации обложек используется система контекстных бандитов (contextual bandits) — программ, обучающихся методом проб и ошибок.

Вместо того, чтобы ждать новых баз данных и завершения A/B-теста, контекстные бандиты определяют оптимальную обложку для каждого отдельного пользователя и контекста.

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

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

Потенциальные признаки

Контекстные бандиты выбирают лучшие обложки исходя из контекста — совокупности признаков, в зависимости от которых модель корректирует своё поведение.

Признаками могут быть многие данные о пользователе: какие тайтлы он запускал до этого, в каком жанре, с каким продуктом и как он взаимодействовал, страна проживания, предпочитаемый язык, устройство, время суток и день недели.

Для определения лучшей обложки также используется число привлечений (take rates) — количество кликов на продукт, поделённое на количество просмотров обложки.

Выбор изображения

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

Оценка эффективности

Офлайн

Для оценки алгоритмов контекстных бандитов используется метод перезапуска (replay). Он позволяет представить, что было бы в записанных ранее сценариях, если бы вместо случайного распределения использовались новые алгоритмы.

Вот пример перезапуска. Система отметила, что пользователи увидели обложки, а также запустили они продукты или нет. Параметр перезапуска нового алгоритма рассчитывается через выявление случаев, когда случайные и выбранные системой обложки совпадают. Далее система вычисляет в этой выборке долю случаев, когда пользователь кликнул на контент.

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

Онлайн

После офлайн-проверки разных моделей те из них, что показали лучшие результаты в перезапуске, были проверены методом A/B-тестирования. Выяснилось, что персонализация действительно работает — основные параметры сервиса значительно выросли.

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

Персонализация обложек на данный момент включена для всех пользователей Netflix. Она показывает хорошие результаты, однако её можно сделать ещё лучше. Например, ускорить обучение персонализации для новых продуктов или расширить её на другие аспекты тайтлов: описание, метаданные, кадры и трейлеры.

#кейсы #маркетинг

{ "author_name": "Саша Море", "author_type": "self", "tags": ["\u043a\u0435\u0439\u0441\u044b","\u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433"], "comments": 10, "likes": 16, "favorites": 11, "is_advertisement": false, "section_name": "default", "id": "31353", "is_wide": "" }
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "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", "tablet" ], "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": "create", "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" } } } ]