machine learning
August 13, 2018

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

В предыдущих материалах, мы рассказывали о том, как в MEGOGO происходила эволюция системы рекомендаций контента для пользователей. От неперсонализированных рекомендаций по мета-данным через полу-персонализированные подборки и полноценную систему персонализированных рекомендаций PAUL, основанную на явных оценках (лайках и дизлайках) мы пришли к самой передовой системе рекомендаций из всех, что мы сейчас используем, системе основанной на данных о просмотрах пользователей.

Основная причина, по которой мы запускаем систему рекомендаций основанную на просмотрах – это увеличение доли пользователей, которые могут воспользоваться ею. Кроме того, эффект от работы системы PAUL был, скажем прямо, незначительным в сравнении с масштабами всей пользовательской базы MEGOGO. Так, если при использовании PAUL мы смогли охватить всего от 4% до 8% зрителей, в то время как при использовании новой системы мы прогнозировали рост этого показателя практически до 80%. Наши пользователи всегда были хороши в одном деле - смотрении контента, а статистических данных по просмотрам у нас было более чем достаточно, чтобы начать разработку системы практически "с колес".

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

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

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

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

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

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

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

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