Рецепты персонализации от Netflix: пусть никто не уйдёт обиженным
А ещё лучше — пусть вообще никто никуда не уходит. Рассказываем, как работают алгоритмы Netflix и чему можно научиться у короля видеостриминга.
Для начала — статистика Netflix по итогам 2017 года.
- Сервис работает более чем в 200 странах.
- Насчитывает 110+ миллионов подписчиков.
- Получает почти 3 миллиарда долларов ежеквартального дохода.
- Растёт на 5 миллионов новых подписчиков в квартал.
- В течение недели воспроизводит свыше миллиарда часов видео.
Для сравнения: в среднем за день YouTube транслирует один миллиард часов видео, Facebook — 110 миллионов, а Netflix — 250 миллионов. - Получает более 37% пикового интернет-трафика в Соединенных Штатах.
- Планирует потратить более 7 миллиардов долларов на новый контент в 2018 году.
Сервис аккумулирует массу информации и знает о своих подписчиках буквально всё: что смотрел, где смотрел и когда, что начал, но потом бросил, что засмотрел до дыр. А что вообще никогда не посмотрит ни за какие коврижки. Эти данные затем используются для метких рекомендаций и постоянного тестирования едва ли не каждого элемента на сайте.
Обложка видео как призыв к действию
Ключевая задача системы персональных рекомендаций Netflix: подобрать фильмы для дальнейшего просмотра и, что ещё важнее, правильно их преподнести. Звучит несложно, правда? Но что, если фильмы новые, подписчик ничего о них не слышал и не представляет, что увидит? В этом случае главную роль играет тизер — обложка фильма, которая должна зацепить зрителя, даже если описание, жанр и актёры ни о чём ему не говорят.
Всё началось с поиска идеальной обложки сразу для всех пользователей — лучшей визуальной ассоциации, которая принесла бы максимальное количество просмотров и зацепила как можно большее число подписчиков. Всю черновую работу по подбору выполняли многорукие алгоритмы-бандиты: анализировали эффективность каждого тизера, а потом отбирали самые популярные.
Однако, учитывая разнообразие вкусов многомиллионной аудитории Netflix, лучше бы, конечно, каждому подписчику показать персональный тизер с учётом его зрительской истории. Отправная точка для анализа — история просмотров пользователя.
На картинке выше пример рекомендаций для двух разных зрителей. Слева — три тизера к фильмам, которые пользователь уже просмотрел, справа — обложка для рекомендации. Если подписчик предпочитает романтические фильмы, то тизером к фильму «Умница Уилл Хантинг» будет картинка сладкой парочки — Мэтта Дэймона и Минни Драйвер. А для любителя комедий магнитом станет улыбка комика Робина Уильямса.
Другой пример: для зрителей, которые выбирают фильмы по актёрскому составу, изображение любимой звезды на тизере может стать явным сигналом к просмотру.
И это самые простые и очевидные сценарии индивидуального подбора обложек. С помощью собранных данных и интеллектуальных алгоритмов их обработки Netflix может дать шанс на популярность каждому видео, а вдобавок расширить круг интересов подписчика, предлагая ему новый опыт.
Контекстные бандиты и роль визуальной презентации
Итак, здесь и сейчас пользователю можно показать только один тизер для одного видео. При этом настройки рекомендаций позволяют выбрать эту картинку для каждого подписчика из десятков и сотен вариантов. Шаг за шагом система выясняет предпочтения зрителя простым и действенным способом: просмотрел он в итоге видео, кликнув по рекомендованной обложке, или нет. Но для чистоты эксперимента необходимо узнать, в какой мере результат вызван именно предложенным тизером. Возможно, решение пользователя о просмотре вообще слабо с ним связано: что, если картинка сработала из-за контекста, а не сама по себе — выделилась среди остальных в списке? Или, наоборот, подходящая картинка, которая сработала бы в другом случае, сейчас затерялась? Что, если на самом деле зацепило краткое описание картины? Может, подписчик просто вспомнил увиденный ранее трейлер, а все ухищрения сервиса тут ни при чём?
Резонный вывод Netflix: нам нужно ещё и ещё больше данных, и анализировать их необходимо самым тщательным образом.
Механизм рекомендаций основан на алгоритмах машинного обучения и совершенствуется с помощью А/Б-тестирования. Случайным образом отбираются две группы пользователей: А-группа остаётся на старом алгоритме, Б-группа тестирует новый. Если по результатам тестирования взаимодействие с сервисом Б-группы явно улучшается, обновление выкатывают для всех пользователей.
Чтобы не затягивать с внедрением новшеств и чтобы все подписчики могли в относительно сжатые сроки начать пользоваться их благами, Netflix перешёл с пакетных обновлений на машинное онлайн-обучение.
Для подбора тизера используются контекстные или контекстуальные бандиты (contextual bandit). Это класс алгоритмов непрерывного онлайн-обучения обобщенной, постоянно пополняемой данными модели с возможностью применения контекста при минимальных затратах. То есть так, чтобы пользователь ничего не успел заметить. Под контекстом здесь понимаются данные профиля пользователя — история просмотров, любимые жанры и история взаимодействия с фильмами, страна, язык, используемое устройство — учитывается всё, даже день недели и время суток. Работа алгоритмов нацелена на снижение отказов.
Но при таком подходе к подбору тизеров важно не скатиться в кликбейт — некачественное взаимодействие, при котором подписчика привлекает только обложка, но само видео не оправдывает его ожиданий: просмотр не состоялся, рекомендация не сработала. Чтобы оценить работу контекстного бандита перед запуском на сервисе, используют технику replay, которая показывает, насколько новый алгоритм успешнее предыдущего, и позволяет выбрать более эффективный. На рисунке ниже сравнивается работа двух алгоритмов в рамках определённых сессий на основе записей в логах системы.
Метрика replay для новой модели вычисляется путём сопоставления профилей, в которых случайный тизер совпал с предложенным новой моделью (столбцы обведены чёрной рамкой). Затем вычисляется доля показа — 2/3.
Именно таким образом эволюционируют алгоритмы, становясь всё более совершенными. После многочисленных экспериментов отбираются лидеры, дающие явный рост успешных показов. Для сравнения эффективности контекстных бандитов и обычных провели А/Б-тестирование, которое и подтвердило изначальное предположение: контекстные бандиты улучшают персонализацию и повышают долю показов. Кроме того, индивидуально подобранная обложка особенно эффективна в случаях, когда фильм был до этого незнаком подписчику. Что снова подтверждает важность визуальной составляющей при знакомстве с новым контентом.
На графике выше — средняя доля успешных показов (чем выше, тем лучше) для различных алгоритмов подбора тизеров. Random (зелёный) выбирает обложку случайным образом, простой Bandit (жёлтый) показывает тизер с самой высокой долей показов, Contextual Bandit (голубой и сиреневый) используют контекст профиля для выбора наилучшего соответствия «тизер-подписчик».
Теперь остаётся развить и расширить этот подход в различных направлениях, в том числе для холодного старта новых проектов с помощью персонализации картинок и видео. Можно применять эту методику и для других данных — трейлеров, галерей или анонсов. А можно подсказывать художникам и дизайнерам, какие образы сделают контент более привлекательным для всех — и одновременно для каждого.
Ниндзя форматов: оптимальная доставка контента
Чтобы обеспечить качественный просмотр фильма, Netflix преобразует каждый видеофайл во множество различных форматов в зависимости от типа устройства, качества связи, географического местоположения, выбора языка и плана подписки подписчика.
В 2007 году Netflix стартовал как стриминговый сервис с прицелом на Microsoft Windows. Со временем круг доступных устройств и платформ расширялся: Roku, LG, Samsung Blu-ray, Apple Mac, Xbox 360, LG DTV, Sony PS3, Nintendo Wii, Apple iPad, Apple iPhone, Apple TV, Android, Kindle Fire, Comcast X1… Сейчас Netflix поддерживает более 2200 различных систем: для каждой создаётся видео в определённом формате, который наилучшим образом подходит для конкретного устройства и конкретной платформы. То есть если вы смотрите Netflix на iPhone, вам покажут видео, которое даёт лучший опыт просмотра на iPhone.
Производственные дома и студии передают Netflix свои видео в формате высокой чёткости — размеры исходников измеряются в терабайтах. Их сложно хранить, а ещё сложнее быстро доставить подписчику в любую точку планеты. Поэтому дальше начинается многоступенчатый процесс.
Netflix тщательно проверяет видео: ищет цифровые артефакты, изменения цвета или пропуски, которые вызванные предыдущими попытками перекодирования или проблемами передачи данных. А уже после того, как видео прошло проверку, конвейер мультимедиа дробит его на множество файлов.
Например, есть файлы, оптимизированные для разных скоростей сети: для подписчика в сети с быстрым доступом загрузится видео более высокого качества, чем для медленного соединения. Аудио кодируется тоже с разным уровнем качества, и это при том, что звук, как и субтитры, создаются отдельно для каждого языка.
Так, для сериала «Корона» (The Crown) платформа хранит около 1200 файлов! А для второго сезона «Очень странных дел» — ещё больше: для кодирования всего одного сезона потребовалось 190 000 часов работы процессоров. Результат: 9570 различных видео, аудио и текстовых файлов!
И всё это для того, чтобы угодить каждому и организовать оптимальную доставку контента для миллионов зрителей с разными вкусами, устройствами и качеством связи.