Рекомендательные системы¶
Постановка задач рекомендательной системы. Метрики оценки качества¶
Рекомендательные системы — это класс алгоритмов машинного обучения, которые предсказывают предпочтения пользователей и рекомендуют им релевантные объекты (товары, фильмы, музыку и т.д.).
Основные типы задач¶
- Предсказание рейтинга — предсказание оценки, которую пользователь поставит объекту
- Ранжирование — упорядочивание объектов по релевантности для пользователя
- Top-N рекомендации — выбор N наиболее подходящих объектов для пользователя
Матрица взаимодействий¶
Основой рекомендательных систем является матрица \(R\) размера \(m \times n\), где: - \(m\) — количество пользователей - \(n\) — количество объектов - \(r_{ui}\) — взаимодействие пользователя \(u\) с объектом \(i\) (рейтинг, клик, покупка)
Метрики оценки качества¶
Для задачи предсказания рейтинга:
-
RMSE (Root Mean Squared Error): $\(RMSE = \sqrt{\frac{1}{|T|}\sum_{(u,i) \in T}(r_{ui} - \hat{r}_{ui})^2}\)$
-
MAE (Mean Absolute Error): $\(MAE = \frac{1}{|T|}\sum_{(u,i) \in T}|r_{ui} - \hat{r}_{ui}|\)$
Для задачи ранжирования:
-
Precision@K — доля релевантных объектов среди топ-K рекомендаций: $\(Precision@K = \frac{|\text{рекомендованные} \cap \text{релевантные}|}{K}\)$
-
Recall@K — доля найденных релевантных объектов: $\(Recall@K = \frac{|\text{рекомендованные} \cap \text{релевантные}|}{|\text{релевантные}|}\)$
-
MAP (Mean Average Precision): $\(MAP = \frac{1}{|U|}\sum_{u \in U} AP_u\)$
-
NDCG (Normalized Discounted Cumulative Gain): $\(NDCG@K = \frac{DCG@K}{IDCG@K}, \quad DCG@K = \sum_{i=1}^{K}\frac{2^{rel_i} - 1}{\log_2(i+1)}\)$
-
MRR (Mean Reciprocal Rank): $\(MRR = \frac{1}{|U|}\sum_{u \in U}\frac{1}{rank_u}\)$
User-based рекомендательные системы. Item-based рекомендательные системы¶
User-based Collaborative Filtering¶
Идея: похожие пользователи имеют схожие предпочтения.
Алгоритм:
- Найти пользователей, похожих на целевого пользователя \(u\)
- Рекомендовать объекты, которые понравились похожим пользователям
Предсказание рейтинга: $\(\hat{r}_{ui} = \bar{r}_u + \frac{\sum_{v \in N(u)} sim(u,v) \cdot (r_{vi} - \bar{r}_v)}{\sum_{v \in N(u)} |sim(u,v)|}\)$
где: - \(N(u)\) — множество соседей (похожих пользователей) - \(sim(u,v)\) — мера сходства между пользователями - \(\bar{r}_u\) — средний рейтинг пользователя \(u\)
Меры сходства:
-
Косинусное сходство: $\(sim(u,v) = \frac{\sum_{i \in I_{uv}} r_{ui} \cdot r_{vi}}{\sqrt{\sum_{i \in I_u} r_{ui}^2} \cdot \sqrt{\sum_{i \in I_v} r_{vi}^2}}\)$
-
Корреляция Пирсона: $\(sim(u,v) = \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}}\)$
Item-based Collaborative Filtering¶
Идея: если пользователю понравился объект A, ему понравятся похожие объекты.
Предсказание рейтинга: $\(\hat{r}_{ui} = \frac{\sum_{j \in N(i)} sim(i,j) \cdot r_{uj}}{\sum_{j \in N(i)} |sim(i,j)|}\)$
где \(N(i)\) — множество объектов, похожих на \(i\), которые оценил пользователь \(u\).
Преимущества Item-based: - Более стабильные результаты (объекты меняются реже, чем вкусы пользователей) - Возможность предварительного вычисления матрицы сходства объектов - Лучше масштабируется при большом количестве пользователей
Матричные разложения (SVD, ALS, SGD)¶
Идея: представить матрицу взаимодействий как произведение двух матриц меньшей размерности.
где: - \(P\) — матрица пользователей размера \(m \times k\) - \(Q\) — матрица объектов размера \(n \times k\) - \(k\) — размерность латентного пространства
Предсказание: $\(\hat{r}_{ui} = p_u^T \cdot q_i = \sum_{f=1}^{k} p_{uf} \cdot q_{if}\)$
SVD (Singular Value Decomposition)¶
Классическое сингулярное разложение: $\(R = U \Sigma V^T\)$
Проблема: требует полную матрицу (без пропусков).
Функция потерь для матричного разложения¶
где \(\lambda\) — коэффициент регуляризации.
ALS (Alternating Least Squares)¶
Идея: чередовать оптимизацию \(P\) при фиксированном \(Q\) и наоборот.
Шаг 1: Фиксируем \(Q\), оптимизируем \(P\): $\(p_u = (Q_{I_u}^T Q_{I_u} + \lambda I)^{-1} Q_{I_u}^T r_u\)$
Шаг 2: Фиксируем \(P\), оптимизируем \(Q\): $\(q_i = (P_{U_i}^T P_{U_i} + \lambda I)^{-1} P_{U_i}^T r_i\)$
Преимущества ALS: - Легко распараллеливается - Хорошо работает с разреженными данными - Гарантированная сходимость
SGD (Stochastic Gradient Descent)¶
Обновление параметров: $\(e_{ui} = r_{ui} - p_u^T q_i\)$ $\(p_u \leftarrow p_u + \alpha(e_{ui} \cdot q_i - \lambda \cdot p_u)\)$ $\(q_i \leftarrow q_i + \alpha(e_{ui} \cdot p_u - \lambda \cdot q_i)\)$
где \(\alpha\) — скорость обучения.
SVD++ (расширенная модель)¶
Учитывает неявную обратную связь: $\(\hat{r}_{ui} = \mu + b_u + b_i + q_i^T \left(p_u + |N(u)|^{-\frac{1}{2}} \sum_{j \in N(u)} y_j\right)\)$
где: - \(\mu\) — глобальный средний рейтинг - \(b_u\), \(b_i\) — смещения пользователя и объекта - \(y_j\) — вектора неявных предпочтений
Коллаборативная фильтрация¶
Коллаборативная фильтрация (Collaborative Filtering, CF) — это подход к построению рекомендательных систем, основанный на коллективном опыте пользователей.
Два основных подхода¶
- Memory-based (на основе памяти)
- User-based CF
- Item-based CF
-
Используют всю историю взаимодействий
-
Model-based (на основе моделей)
- Матричные разложения (SVD, NMF)
- Нейронные сети (NCF, AutoRec)
- Обучают модель на данных
Проблема холодного старта¶
- Новый пользователь: нет истории для сравнения
- Новый объект: нет оценок для рекомендации
Решения: - Гибридные системы (CF + контентная фильтрация) - Запрос начальных предпочтений - Использование демографических данных
Neural Collaborative Filtering (NCF)¶
Нейросетевой подход к коллаборативной фильтрации:
где \(f\) — нейронная сеть с параметрами \(\Theta\).
Архитектура NCF: 1. Embedding-слой для пользователей и объектов 2. Несколько полносвязных слоёв 3. Выходной слой с предсказанием
Контентная фильтрация vs Коллаборативная фильтрация¶
| Аспект | Контентная | Коллаборативная |
|---|---|---|
| Данные | Признаки объектов | Взаимодействия пользователей |
| Холодный старт | Только для пользователей | Для пользователей и объектов |
| Разнообразие | Низкое | Высокое |
| Масштабируемость | Хорошая | Зависит от метода |
Гибридные системы¶
Комбинируют несколько подходов: - Взвешенное объединение: \(\hat{r} = \alpha \cdot \hat{r}_{CF} + (1-\alpha) \cdot \hat{r}_{content}\) - Каскадирование: один метод уточняет результаты другого - Переключение: выбор метода в зависимости от ситуации - Объединение признаков: использование признаков из разных источников в одной модели