Рекомендательные системы простыми словами: как данные превращаются в рекомендации

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

Содержание Следующие статьи
Содержание Рекомендательные системы простыми словами: как данные превращаются в рекомендации
  1. Почему рекомендация — это не угадайка, а задача про предпочтения
  2. Как часто выглядит базовая идея
  3. Почему задача сложнее, чем кажется
  4. Как показать идею на Python

Почему рекомендация — это не угадайка, а задача про предпочтения

Когда пользователь видит подборку фильмов, товаров или курсов, кажется, будто система каким-то образом «понимает вкус». На деле рекомендательная система строит приближение предпочтений по наблюдаемым сигналам: просмотрам, покупкам, лайкам, кликам, времени удержания и другим взаимодействиям. То есть она не читает мысли, а пытается восстановить скрытую структуру интересов по истории поведения.

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

Как часто выглядит базовая идея

Формула: раздел математики — линейная алгебра
$$ \hat r_{ui} = p_u^\top q_i $$
Что означает эта формула

В матричной факторизации и многих похожих подходах оценка интереса пользователя к объекту получается как скалярное произведение двух скрытых векторов: пользовательского и объектного.

Что означает каждый символ
  • \hat r_{ui} — предсказанный интерес пользователя u к объекту i
  • p_u — вектор скрытых предпочтений пользователя
  • q_i — вектор скрытых характеристик объекта
  • ^\top — операция транспонирования для вычисления скалярного произведения

Интуитивно это значит, что и пользователь, и объект описываются в одном скрытом пространстве. Если их направления хорошо совпадают, оценка будет высокой. Это очень красивая геометрическая идея: система не хранит явный список правил, а учится размещать пользователей и объекты в общем смысловом пространстве.

Почему задача сложнее, чем кажется

Во-первых, пользовательские предпочтения меняются. Во-вторых, система почти всегда наблюдает только часть сигналов: отсутствие клика не обязательно означает отсутствие интереса. В-третьих, есть проблема cold start — новые пользователи и новые объекты. В-четвертых, сама метрика качества в рекомендациях не так проста: нужен баланс между точностью, новизной, разнообразием и полезностью для бизнеса.

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

Как показать идею на Python

example.pyPython
import pandas as pd  # создаем таблицу простых пользовательских взаимодействий

interactions = pd.DataFrame({  # задаем пользовательско-объектные оценки интереса
    'user_id': [1, 1, 2, 2, 3, 3],  # идентификатор пользователя
    'item_id': ['A', 'B', 'A', 'C', 'B', 'C'],  # идентификатор объекта
    'score': [5, 3, 4, 5, 2, 4],  # наблюдаемый сигнал интереса
})
matrix = interactions.pivot_table(index='user_id', columns='item_id', values='score', fill_value=0)  # строим пользователь-объектную матрицу
similarity = matrix.T.corr()  # грубо оцениваем близость пользователей по истории взаимодействий
print(matrix)  # смотрим базовое представление взаимодействий
print(similarity.round(3))  # читаем приближенную похожесть пользователей

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

Что читать дальше

Связанные статьи по этой теме

Canary deployment для моделей: как выкатывать новую версию без лишнего риска Latency в ML API: почему быстрая модель важна не меньше точной Batch inference и real-time inference: как выбирать режим работы модели
Вернуться в блог