machine learning
July 26, 2018

Cистема персонализированных рекомендаций видеоконтента в MEGOGO

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

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

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

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

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

За этот период подборка «Потому что вы добавили в Избранное» собрала 3,5 тысячи кликов, а «Потому что вам понравилось» - 1,5 тысяч кликов.

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

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

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

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

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

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

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

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

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

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

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

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