DATA4
Автор статьи: Александр крайнов

Алгоритмы прогнозирования рекомендаций для новых пользователей

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

Определение самых популярных элементов

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

Перед запуском такой рекомендательной системы необходимо провести дополнительную обработку данных. В видео сервисе мы можем кластеризовать видео по жанрам, а затем, в процессе работы рекомендательной системы, предлагать для новых пользователей самые популярные видео из кластеров "Фантастика", "Мелодрамы", "Ужасы" и так далее. Если пользователь выберет что-то из предложенного ему, то рекомендательная система уже будет знать, какой жанр ему больше нравится, и подстраивать рекомендации соответствующим образом.

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

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

Алгоритмы прогнозирования

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

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

Скользящее среднее

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

Подпишись на рассылку новостей о AI
Только полезные материалы о машинном обучении и искусственном интеллекте. Мы уважительно относимся к нашим читателям и рассылаем письма не чаше 1 раза в неделю!
Если точки ряда — это значения популярности по дням, то для мы получим среднее арифметическое популярности видео за неделю. В задаче рекомендаций обычно важно, чтобы последние значения в ряду оказывали больший вес. Введя коэффициенты в зависимости от удаленности даты от текущей, мы получим взвешенную модель:
Например, для w = ( 0.4, 0.05, 0.05, 0.05, 0.05, 0.3, 0.1) наибольшее значение при рекомендации будет играть популярность видео в тот же день недели неделю назад, а также в последние 2 дня.

Декомпозиция временных рядов

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

T — тренд — общая тенденция возрастания или убывания, зависящая, например, от популярности приложения;

Si— сезонные компоненты, которых может быть несколько, — например, колебания популярности с зависимости от времени года, дня недели, времени суток;

R— остатки (шум) — случайные колебания значений, слабо поддающиеся прогнозированию;

Рис. 1. Пример декомпозиции временного ряда на тренд, сезонный компонент и шум [5].

Метод Хольта — Винтерса, Брауна

Выделение компонентов временного ряда может представлять сложную задачу, особенно в том случае, если мы не знаем, какая периодичность может наблюдаться в исходных данных. Однако существуют методы для автоматизации этой задачи [5].

Экспоненциальное сглаживание

Компромиссом между простыми методами вычисления среднего и более сложной декомпозицией представляют собой методы экспоненциального сглаживания. В рамках этого подхода широко известны три модели [1]:

1. Простое сглаживание (модель Брауна)

2. Двойное сглаживание (модель Хольта)

3. Тройное сглаживание (модель Хольта — Винтерса)

Простое сглаживание, по сути, представляет собой вычисление взвешенного среднего на последних 2-х элементах ряда.

Двойное экспоненциальное сглаживание уже принимает в расчет и изменение тренда, и колебания значений остатков вокруг этого тренда:

В этих формулах мы вычисляем предсказание изменения остатков (l) и тренда (d). Итоговое значение y — сумма этих двух величин. Для прогнозирования рекомендаций эта модель особенно полезна, так как позволяет учесть недельные (или суточные) колебания без сложной ручной настройки.

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

Практическая разработка

Прогнозирование — часто встречающийся метод моделирования в статистике, и большинство моделей можно найти в библиотеке statsmodels, а именно в пакете statsmodels.tsa[6]. Например, экспоненциальное сглаживание можно реализовать с помощью нескольких строчек:

from statsmodels.tsa.holtwinters import SimpleExpSmoothing

from random import random

data = [x * 0.3 + random() for x in range(1, 100)]

ses = SimpleExpSmoothing(data)

ses_fit = ses.fit()

y = ses_fit.predict(len(data), len(data))

Помимо описанных выше простых методов там можно найти и более сложные модели, такие как ARIMA, которые, впрочем, редко применяются в рекомендательных системах.

DATA4

Сделаем будущее настоящим!
Связаться с нами
Напишите контактные данные, чтобы мы связались с вами.