Система рекомендаций Netflix (часть шестая) — продолжение следует

машинное обучение искусственный интеллект Perfect

Продолжение следует — это режим непрерывного воспроизведения, более распространенный в зарубежных странах. Первоначальный текст этой статьи взят изTo Be Continued. Это не полный и законченный перевод, но то, что я лично считаю важной частью. Если обнаружено какое-либо нарушение. Пожалуйста, свяжитесь со мной.

Background

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

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

Большая часть работы по рекомендациям сосредоточена на обнаружении, но в этой статье мы сосредоточимся на режиме, который следует продолжить, и объясним, как мы использовали машинное обучение для улучшения опыта участников в обоих режимах. В частности, мы сосредоточились на строке под названием «Продолжение следует» (CW), которая появляется на главной странице домашних страниц участников Netflix на большинстве платформ. Эта строка используется как простой способ найти передачи, которые пользователь недавно (частично) смотрел и, возможно, захочет возобновить. Можно предположить, что поток пользователей этой линии очень велик.

Continue Watching

Ранее приложение Netflix на некоторых платформах отображало недавно просмотренные шоу (здесь мы используем термин «широкий дисплей» для включения всех форм видеоконтента на Netflix, включая фильмы и телесериалы), отсортированные по тому, как давно в последний раз воспроизводилось каждое шоу. Сортировать. Способ размещения строк на странице зависит от некоторых правил, зависящих от типа устройства. Например, на веб-сайте отображается только одно продолжение в верхнем левом углу страницы. Хотя это разумные базовые показатели, мы решили унифицировать пользовательский интерфейс линейки CW на разных платформах и улучшить его двумя способами:

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

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

  • находятся в запое; т. е. потратили много времени на просмотр телешоу в последнее время, но не закончили его
  • Недавно смотрел фильм
  • Часто смотрите одно и то же шоу в текущее время или на текущем устройстве

С другой стороны, пользователь с большей вероятностью войдет в режим обнаружения, если:

  • Только что закончил смотреть все серии фильма или телепередачи
  • В последнее время ничего не видел
  • Запуск новой службы

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

Building a Recommendation Model for Continue Watching

Чтобы построить рекомендательную модель для строк CW, нам сначала нужно вычислить набор функций, которые могут помочь модели предсказать, когда кто-то возобновит просмотр. Сюда могут входить сведения о пользователе, шоу в CW-линии, прошлые взаимодействия пользователя с этими шоу и некоторая контекстная информация. Затем мы используем эти функции в качестве входных данных для построения модели машинного обучения. Благодаря итеративному процессу выбора переменных, обучения модели и перекрестной проверки мы можем оптимизировать и выбрать наиболее подходящий набор функций.

Во время мозгового штурма для этой функции мы рассмотрели множество идей для построения модели CW, в том числе:

  • функции на уровне пользователя:
    • Данные, относящиеся к подпискам пользователей, такие как подписки пользователей, зарегистрированные страны и предпочитаемый язык.
    • Последняя активность пользователя
    • Пользовательские прошлые рейтинги и жанровые предпочтения
  • Интерактивная информация между пользователем и программой:
    • Последний раз, когда шоу было добавлено в каталог или просмотрено пользователем
    • Сколько фильмов/шоу посмотрел пользователь
    • Метаданные о шоу, такие как тип, жанр и количество эпизодов; например, детское шоу можно пересматривать.
    • Остальные программы доступны для просмотра пользователями
    • Популярность программы и ее актуальность для пользователей
    • Как часто пользователи в среднем смотрят шоу
  • Контекстные особенности:
    • текущее время, день недели
    • Место расположения
    • оборудование

Two applications, two models

Как упоминалось выше, у нас есть две задачи, связанные с режимом продолжения: ранжирование шоу в строке CW и соответствующее размещение строки CW на домашней странице пользователя.

Show ranking

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

Мы оценили модель в автономном режиме. Базовый уровень — это предыдущая система, в которой шоу просто сортируются по времени последнего выхода каждого шоу в эфир. Эти данные также используются в качестве признаков в нашей новой модели. Сравнивая модель с ранжированием по давности, мы наблюдаем значительные улучшения в различных офлайн-метриках. На приведенном ниже графике показана точность @ 1 во времени для обеих схем. Видно, что улучшение производительности намного больше, чем ежедневные изменения. Модель также значительно превзошла ранжирование на основе недавности при A/B-тестировании и лучше соответствовала нашим ожиданиям в отношении поведения участников.

Row placement

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

Reusing the show-ranking model

Самый простой способ — повторно использовать предыдущую модель. В частности, мы можем откалибровать оценки отдельных шоу, чтобы оценить вероятность P(play(s) = 1), что каждое шоу будет возобновлено в данном сеансе. Мы можем использовать эти индивидуальные вероятности для всех программ в строке CW, чтобы получить непрерывную общую вероятность, то есть вероятность того, что по крайней мере одна программа из строки CW будет восстановлена. Например, при простом предположении, что разные передачи не зависят друг от друга, мы можем написать вероятность того, что хотя бы одна передача в линии CW будет сыграна:

Dedicated row model

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

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

Tuning the placement

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

Serving the Row

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