Как устроена система персонализированных рекомендаций видеоконтента в Megogo

3066
12

Дмитрий Мелков, CIO видеосервиса Megogo, ранее рассказал, как в компании начинали строить систему рекомендаций – в частности, о неперсонализированных рекомендациях. В этот раз Мелков подготовил колонку на тему рекомендаций, основанных на активных действиях пользователей, а также о том, какие у такой системы есть недостатки и преимущества.

 

Когда начинаешь улучшать user experience пользователей, бывает тяжело остановиться. Так обстояли дела и с нашей системой рекомендаций. Уже в процессе реализации неперсонализированных элементов системы мы поняли, что это хороший старт, но недостаточно для удобного пользования сервисом. Так что через некоторое время у нас уже было видение двух подсистем персонализированных рекомендаций, основанных на активных действиях пользователя.

PAUL строилась на явных оценках каждого пользователя (лайках и добавлениях в избранное), в то время как ALS – на статистике обо всем просмотренном контенте. Сперва речь пойдет о PAUL.

Полуперсонализированная рекомендация

Сначала у нас были только подборки, основанные на мета-данных (подробнее мы писали о них в предыдущей статье), на основании которых мы решили проверить успешность рекомендаций по активности пользователей MEGOGO. Мы создали две специальных подборки – «Потому что вы добавили в Избранное» и «Потому что вам понравилось». В каждую из них попадали фильмы, которые, согласно системе мета-рекомендаций, были похожи на контент, попавший к пользователю в «Избранное», или которому был поставлен «лайк» соответственно.

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

За этот период подборка «Потому что вы добавили в Избранное» собрала 3500 кликов, а «Потому что вам понравилось» — 1500 кликов.

Несмотря на то, что в целом пользователей на заявленной платформе у нас в тот момент было порядка 980 000, новые подборки рекомендаций смогли увидеть только те из них, кто ставил хотя бы один лайк фильмам (таких было всего 40 000 – около 4%) и добавил хотя бы один фильм в «Избранное» (таких пользователей собралось порядка 53 000, что составляет около 5,3%).

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

  • «Потому что вы добавили в Избранное» — получила примерно в 5,5 раз больше уникальных кликов (3500 против 600);
  • «Потому что вам понравилось» — получила в 3,6 раз больше уникальных кликов (1500 против 400).

Первая персонализированная рекомендация

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

Система довольно простая с точки зрения алгоритма, который основан на коллаборативной фильтрации плюс некоторая бизнес-логика. Система анализирует оценки пользователей и на основе этого анализа уже составляет список рекомендаций. В упрощенном виде работу PAUL можно описать так: если предположить, что Пользователь 1 «лайкнул» фильмы «Интерстеллар», «Прибытие», «Чужой» и «Аннигиляция», а Пользователь 2 – фильмы «Интерстеллар», «Чужой», «Космическая Одиссея» и «Марсианин», то первому в подборке выпадут «Марсианин» и «Космическая Одиссея», а второму – «Прибытие» и «Аннигиляция».

Если вы предположите, что подобная аналитическая задача требует огромного количества машинных ресурсов – вы будете абсолютно правы. Для работы PAUL нам пришлось полностью выделить отдельный сервер с 64 ГБ оперативной памяти.

Оставшиеся проблемы и выводы

Самая большая проблема PAUL – вовсе не техническая. К сожалению, в настоящий момент, у этой подсистемы все ещё слишком маленький бизнес-импакт. Чтобы обеспечить релевантность результатов (и экономию ресурсов), в выборку алгоритма попадают только фильмы, получившие не менее 15 оценок, а также пользователи, имеющие не менее 10 лайков/фильмов в «Избранном». Таких пользователей у нас набирается всего-навсего 4-8% в зависимости от платформы. Излишним будет говорить, что эта цифра – мизерная.

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

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

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

Но по-большому счету система PAUL тоже не более чем часть R&D. В данный момент настоящий венец системы рекомендаций – алгоритм основанный на информации о просмотрах. Именно подобным этому алгоритмом пользуется и Netflix.

Реализация системы рекомендаций на основе данных о смотрении контента. Продукт

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

Так, если при использовании PAUL мы смогли охватить всего от 4% до 8% зрителей, при использовании новой системы мы прогнозировали рост этого показателя практически до 80%. Наши пользователи всегда были хороши в одном деле — смотрении контента, а статистических данных по просмотрам у нас было более чем достаточно, чтобы начать разработку системы практически «с колес».

Проблемы и гипотезы

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

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

Результаты реализации

Внедрение новой системы позволило нам вдвое увеличить показатель кликабельности подборки “рекомендованное” для пользователей – с 14% до 28%. А значит пользователи считают ее гораздо более информативной, чем другие системы рекомендаций, использованные нами до этого. Конечно, реальную эффективность рекомендаций, созданных на основе этого алгоритма, мы сможем определить только после того, как узнаем, действительно ли пользователь просмотрел контент, после того, как узнал о нем благодаря системе рекомендации. Сейчас, мы как раз занимаемся сбором данных о рекомендациях для каждого пользователя, чтобы потом сравнить их с реальными просмотрами.

Отдельного внимания заслуживает тот факт, что для пользователей, которые уже давно пользуются нашим сервисом, набор рекомендаций практически не меняется. Например у одного из наших пользователей топ-20 объектов не меняются уже более двух недель. Мы предполагаем, что это происходит потому, что пользователь не смотрит конкретно рекомендуемые объекты, так как у него большая история просмотра, потому что он редко смотрит новый контент, который бы менял его предпочтения с точки зрения алгоритма и т.д. Когда мы целиком осознали всю эту ситуацию, мы поняли, что нам необходимо собирать не только положительный, но и негативный фидбэк (который заключается в отсутствии внимания на рекомендованный объект), а также создать систему пересортировки рекомендованного контента практически в реальном времени.

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

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

Автор: Дмитрий Мелков, .IO видеосервиса Megogo

Оставить комментарий

Комментарии | 12

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

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

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

      • Как ваш лояльный платящий 😉 пользователь — пожалуйста, сделайте поиск и фильтрацию с сортировкой и всеми условиями («не показывать фильмы из страны Х» например, мультивыбором значений и т.п.).

    • Статья — только начало цикла, который стартовали с самого простого материала.

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

      И да, предпочтения не просто у всех людей разные, а у одного человека могут быть разные в зависимости от дня недели, настроения и фазы Луны. Угадать 100% невозможно. Но это не повод не пытаться делать это вообще. Вопрос исключительно в сборе максимального количества релевантных данных и создании моделей, которые могут помочь сделать предсказания статистически точнее. А значит — полезнее для условного большинства наших пользователей.

  • ну зря вы это написали. в 21м веке уже используются алгоритмы ML кластеризации.

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

      • верю, но зачем писать о том, что не будет работать и морально устарело? вы ж статьей наверное хотели показать какая megogo продвинутая компания? а что реально показали? или это был самопиар?

        • Если Вы эксперт в этой области, то должны понимать, что даже самые слабые по-одиночке модели, могут внести значительный вклад в ансамбль. «Не будет работать» — это весьма смелое утверждение. «Морально устарело» — да, по сравнению с сегодняшними state-of-art решениями, голый collaborative filtering слишком дубовый, негибкий и не учитывает огромное количество других сигналов. Но является необходимым базисом для дальнейшего развития рекомендательных систем, когда это делается с чистого листа эволюционным путём.
          Цель цикла статей — показать, как Megogo развивается технологически. Там, где вчера были ручные подборки, приходит персонализация. Вслед за простыми методами приходят комплексные. Но Рим не сразу строился. Это надо понимать. И при желании, всегда можно поучаствовать. Растущие продукты — это очень круто для тех, кто хочет активно развиваться.

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

  • Это всё, конечно, хорошо. Но в меню «Телеканалы» на Smart TV нет функции поиска. Получается ситуация: есть ТВ-архив, хочется посмотреть определённый выпуск передачи за позавчера, например. И чтобы добраться до интересующего выпуска, приходится многократно жать на кнопки, поднимаясь вверх по списку телепередач за несколько дней.
    Добавьте, пожалуйста, поиск в телеканалы.

Поиск