Краткосрочные и долгосрочные персональные рекомендации

от автора

Автор: Роман Зыков, эксперт в области баз данных, независимый AI-консультант LENNUF.ru

Когда мы говорим про персональные рекомендации, мы часто забываем, что они бывают разного типа. В данной статье я рассмотрю основные отличия долгосрочных (long term) и краткосрочных (short term) рекомендаций.

Персональные рекомендации означают, что мы рекомендуем что-то пользователю с учетом его личных интересов учитывая его сигналы. Сами сигналы бывают двух видов — явные (explicit), когда пользователь говорит, что ему нравится (лайк, оценка к песне, отзыв на товар); и неявные (implicit), когда пользователь совершает какие-то действия (посмотрел товар, послушал песню, что-то поискал), по которым мы не можем однозначно оценить нравится/не нравится что-то пользователю. В первых версиях рекомендательных систем было принято пользоваться только явными данными, это видно и по литературе, и по научным статьям того времени. Неявных данных обычно значительно больше — вспомните, сколько товаров вы посмотрели (неявные сигналы) перед покупкой, а потом по скольким товарам вы оставили отзывы (явные сигналы)? Поэтому в последнее десятилетие пошел сдвиг в сторону неявных рекомендаций. Даже представители Netflix 5 лет назад на конференции RecSys объявили о важности таких данных. Как это мы можем заметить? Например, рекомендации на youtube постоянно подстраиваются по те ролики, которые вы смотрели, и под те ролики, которые вы оценили лайками. То же самое делают рекомендательные системы в стриминговых музыкальных сервисов, социальных сетей и интернет-магазинов.

Вернемся к вопросу долгосрочных/краткосрочных рекомендаций. Под долгосрочными интересами я подразумеваю интересы пользователя, которые актуальны на длительном периоде времени. Это могут быть товарные категории, бренды, жанры музыки, музыкальные группы и т.д. Под краткосрочными интересами пользователя — те, которые нужно сиюминутно удовлетворить под его текущие потребности. Например, девушка выбирает сапоги — цвет, длина каблука, толщина подошвы, цена, бренд — вполне подходят под краткосрочные интересы. Оба типа рекомендаций должны эти интересы удовлетворить. Для музыки — ритм, наличие/отсутствия вокала.

Долгосрочные рекомендации

Самая простая реализация заключается в том, что мы храним давность последнего действия (Recency, привет RFM!) и частоту взаимодействия (Frequency) для каждой категории товаров, жанра музыки, группы … Эти две переменные на 80% закрывают потребность в данных для учета долгосрочных интересов. Их очень удобно использовать в “ковровых” рассылках, на главных страницах интернет-магазинов, когда пользователь возвращается на сайт. Уж лучше ему показать товары, учитывающие его прошлые интересы, чем просто бестселлеры магазина. Здесь также можно использовать косвенные источники данных, например, интересы из посещенных страниц.

В техническом исполнении долгосрочные рекомендации не требуют серьезных вложений, как правило их можно пересчитывать с какой-то регулярностью, например, раз в день, пакетным (batch) образом. Алгоритм можно использовать самый простейший, например, линейно взвесив два наши переменные — Recency и Frequency. А затем просто отсортировать по убыванию веса и взять ТОП интересующих категорий.

Краткосрочные рекомендации

Краткосрочные рекомендации выглядят посложнее и поинтереснее долгосрочных. Представьте, вы приходите на сайт и выбираете обувь. В процессе вы кликаете на интересующие вас товары и система рекомендаций пытается определить — какие характеристики товара вас интересуют больше, чем среднестатистического посетителя. Пример такой реализации рекомендаций вы найдете в статье, соавтором которой я являюсь, — “Application of Kullback-Leibler divergence for short-term user interest detection”.

Если кратко, то у алгоритма KL (назову его так для простоты) есть предварительно рассчитанные распределения популярности свойств (цена, цвет, бренд и т.д.). В процессе серфинга пользователя — мы получаем его личные распределения в свойствах товара. Чем это распределение “дальше” от “среднего”, тем выше алгоритм пушит товары с этими свойствами. Какие свойства можно использовать для алгоритма? Кроме обычных свойств товара, которые есть в товарной базе, никто не мешает нам использовать эмбеддинги, рассчитанные на основе текстовых описаний или фотографий товара.

Сложность реализации любого краткосрочного алгоритма — real-time составляющая, что накладывает ограничения на реализацию. Ведь нам нужно реранжировать выдачу рекомендаций после каждого клика. Часть данных для упомянутого KL-алгоритма можно предрассчитывать — распределения свойств товара для среднестатистического пользователя и embeddings и заливать в базу данных раз в день.

В любом алгоритме рекомендаций есть проблема угадываемости/разнообразия (recall- diversity tradeoff). Она заключается в том, что алгоритмы производят слишком однообразную и предсказуемую выдачу в духе Капитан Очевидность. Вспомните, какие треки рекомендует стриминговый сервис — если они слишком однообразны, то становится скучно. Чтобы бороться с этим необходимо либо “перемешивать” выдачу более сложным способом, чем просто отсортировать по весу. Либо использовать тактику explore-exploit из reinforcement learning, когда мы вносим некоторую непредсказуемость в выдачу пользователю. От себя скажу, что улучшения разнообразия (diversity) рекомендаций вносит положительный эффект на реальных А/Б тестах в онлайне.

ссылка на оригинал статьи https://habr.com/ru/post/562102/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *