Совместная фильтрация

Чтобы устранить некоторые ограничения фильтрации на основе содержимого, совместная фильтрация одновременно использует сходство между пользователями и элементами для предоставления рекомендаций. Это позволяет давать счастливые рекомендации; то есть модели совместной фильтрации могут рекомендовать элемент пользователю A на основе интересов аналогичного пользователя B. Кроме того, вложения могут изучаться автоматически, не полагаясь на ручную разработку функций.

Пример рекомендации фильма

Рассмотрим систему рекомендаций фильмов, в которой обучающие данные состоят из матрицы обратной связи, в которой:

  • Каждая строка представляет пользователя.
  • Каждый столбец представляет элемент (фильм).

Отзывы о фильмах делятся на две категории:

  • Явный — пользователи указывают, насколько им понравился конкретный фильм, предоставляя числовую оценку.
  • Неявный — если пользователь смотрит фильм, система делает вывод, что ему интересно.

Для упрощения предположим, что матрица обратной связи является бинарной; то есть значение 1 указывает на интерес к фильму.

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

  • сходство с фильмами, которые пользователю нравились в прошлом
  • фильмы, которые понравились похожим пользователям

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

Кино Рейтинг Описание
Восстание темного рыцаря ПГ-13 Бэтмен пытается спасти Готэм-сити от ядерного уничтожения в этом продолжении «Темного рыцаря », действие которого происходит во вселенной DC Comics.
Гарри Поттер и Философский Камень PG Мальчик-сирота узнает, что он волшебник, и поступает в школу чародейства и волшебства Хогвартс, где вступает в свою первую битву со злым Лордом Волан-де-Мортом.
Шрек PG Милый людоед и его напарник-осел отправляются на задание по спасению принцессы Фионы, которая заточена в замке драконом.
Тройняшки из Бельвиля ПГ-13 Когда профессионального велогонщика Чемпиона похищают во время Тур де Франс, его бабушка и толстая собака отправляются за границу, чтобы спасти его с помощью трио пожилых джазовых певцов.
Сувениры р Больной амнезией отчаянно пытается раскрыть дело об убийстве своей жены, нанося на свое тело улики.

1D встраивание

Предположим, мы присваиваем каждому фильму скаляр в \([-1, 1]\) , который описывает, предназначен ли фильм для детей (отрицательные значения) или для взрослых (положительные значения). Предположим, что мы также назначаем скаляр каждому пользователю в \([-1, 1]\) , который описывает интерес пользователя к детским фильмам (ближе к -1) или фильмам для взрослых (ближе к +1). Произведение встраивания фильма и встраивания пользователя должно быть выше (ближе к 1) для фильмов, которые, как мы ожидаем, понравятся пользователю.

Изображение, показывающее несколько фильмов и пользователей, расположенных вдоль одномерного пространства встраивания. Положение каждого фильма по этой оси показывает, является ли он детским фильмом (слева) или фильмом для взрослых (справа). Позиция пользователя описывает интерес к фильмам для детей или взрослых.

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

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

2D-встраивание

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

Изображение, показывающее несколько фильмов и пользователей, расположенных в двумерном пространстве встраивания. Положение каждого фильма по горизонтальной оси показывает, является ли это фильмом для детей (слева) или фильмом для взрослых (справа); его положение по вертикальной оси показывает, является ли это блокбастером (вверху) или артхаусным фильмом (внизу). Позиция пользователей отражает их интересы в каждой категории.

Мы снова помещаем наших пользователей в то же пространство встраивания, чтобы лучше объяснить матрицу обратной связи: для каждой пары (пользователь, элемент) мы хотели бы, чтобы точечный продукт встраивания пользователя и встраивания элемента был близок к 1, когда пользователь смотрел фильм и 0 в противном случае.

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

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

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

Проверьте свое понимание

Модель рекомендует приложение для покупок пользователю, потому что он недавно установил подобное приложение. Пример какой фильтрации?
Контентная фильтрация
Отличная работа! Контентная фильтрация не учитывает других пользователей.
Совместная фильтрация
Совместная фильтрация учитывает других пользователей. В данном сценарии нас интересует только один пользователь.