Как стать автором
Обновить

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

Время на прочтение4 мин
Количество просмотров1.5K

Автор: Роман Зыков, эксперт в области баз данных, независимый 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) рекомендаций вносит положительный эффект на реальных А/Б тестах в онлайне.

Теги:
Хабы:
Всего голосов 6: ↑4 и ↓2+2
Комментарии0

Публикации