Рекомендательные системы

Общая схема

Рекомендательная система работает в цикле: формируем список кандидатов → отбираем → ранжируем моделью → предлагаем → наблюдаем за взаимодействием → обновляем модель. Основная идея двухэтапного подхода: сначала снижаем число кандидатов, потом ранжируем.

Формальная постановка

\(U\) — множество пользователей, \(I\) — множество объектов. Для некоторых пар известен рейтинг: \((u, i) \to r_{ui}\). Матрица рейтингов \(R = \{(u, i, r_{ui})\}\) разреженная.

Задача: построить модель \(a(u, i) \approx r_{ui}\).

Типы обратной связи:

  • Явные (Explicit) — лайки, оценки, отзывы.
  • Неявные (Implicit) — добавление в корзину, время чтения, просмотр.

Коллаборативная фильтрация

Идея: для рекомендации используем то, как пользователь взаимодействовал с объектами.

Memory-based CF

Находим похожих пользователей через метрику схожести. Через корреляцию Пирсона:

\[w_{uv} = \frac{\sum_{i \in I_{uv}} (r_{ui} - \bar{r}_u)(r_{vi} - \bar{r}_v)}{\sqrt{\sum_{i \in I_{uv}} (r_{ui} - \bar{r}_u)^2} \cdot \sqrt{\sum_{i \in I_{uv}} (r_{vi} - \bar{r}_v)^2}}\]

Коллаборация пользователя \(u_0\): \(U_{(u_0)} = \{v \in U \mid w_{v, u_0} > \alpha\}\). Предсказание рейтинга объекта \(i\):

\[p_i = \frac{\sum_{v \in U_{(u_0)}} [\exists r_{vi}] \cdot r_{vi}}{\sum_{v \in U_{(u_0)}} [\exists r_{vi}]}\]

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

Item-based CF

То же самое, но вместо схожести пользователей — схожесть объектов. Плюсы: простота. Минусы: медленно, много памяти, нельзя обучать.

Latent Factor Models

Разложение матрицы рейтингов на скрытые факторы: \(R \approx P \cdot Q^T\), где \(P\) — матрица пользователей, \(Q\) — матрица объектов в пространстве скрытых факторов. Обучается через SGD.

Сессионные рекомендации

Сессия \(s = (o_1, \dots, o_n)\), где \(o_i = (v_j, a_k)\) — объект и тип взаимодействия. Задача:

\[\hat{s} = \mathop{\text{argmax}}_{s \in S,\, c \in C} f(s, c)\]

Метод Идея Учитывает порядок?
Associative Scores (AS) Доля пользователей, взаимодействовавших с парой объектов Нет
Sequential Rules (SR) Учитывает близость взаимодействий \(\frac{1}{|i - j|}\) Да
Markov Chains (MC) \(P(v_i \to v_j) = \frac{\text{freq}(v_i \to v_j)}{\sum_{v_t} \text{freq}(v_i \to v_t)}\) Да, строго
Марковские цепи требуют строгой упорядоченности данных — это не всегда достижимо на практике.
← Назад к списку тем