Введение

Система рекомендаций (или система рекомендаций) является очень важным инструментом для специалиста по данным, потому что такие системы широко используются малыми и крупными компаниями для различных целей. Их основная миссия - предсказать рейтинг или предпочтения пользователя в отношении данного элемента. Amazon, например, использует системы рекомендаций, чтобы рекомендовать книги своим клиентам на основе предыдущих покупок. YouTube и Netflix используют системы рекомендаций, чтобы рекомендовать новый контент своим клиентам.

Цели рекомендательных систем

Рекомендательные системы обещают бизнесу множество преимуществ, таких как:

Общие подходы

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

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

Фильтры на основе содержимого
Если компания подробно знает свои продукты, можно внедрить систему фильтрации на основе содержимого. Для его реализации необходимо классифицировать все товары по тегам или аналогичным свойствам. Например, если я смотрю телешоу «Сверхъестественное», оно содержит теги «ужас» и «комедия», поэтому алгоритм будет рекомендовать контент с похожими тегами, например телешоу «Люцифер».

Сквозной коллаборативный фильтр

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

  • Получить сходство между пользователями или объектами;
  • Понять математическую концепцию подобия;
  • Реализуйте рекомендательную модель.

Измерение сходства
Сходство - это дополнение к расстоянию. Расстояние между двумя точками можно легко получить с помощью евклидова расстояния, вычислив длину прямой линии, соединяющей две точки. Когда мы говорим о сходстве, вместо того, чтобы выяснять расстояние между двумя точками, наша цель - выяснить, «насколько близки» точки. Значение сходства обычно выражается числом от 0 до 1, где 0 означает низкое сходство, а 1 - высокое сходство.

Косинусное подобие
С двумя векторами U и V, где U = (3, 5) и V = (1, 5), расстояние между U и V можно легко вычислить с помощью евклидова расстояние. Но насколько похожи эти векторы? Обычный способ измерения сходства называется косинусным сходством.

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

  • cos (0º) = 1
  • cos (90º) = 0
  • cos (180º) = -1

То есть, используя косинусное подобие, когда угол между векторами приближается к 0º, векторы очень похожи (параллельны одному и тому же направлению), поэтому сходство равно 1. Когда угол достигает 90º, векторы ортогональны и сходство составляет 0º. . Наконец, при угле 180º векторы противоположны с подобием -1. Если рассматривать только неотрицательные векторы (в первом квадранте декартовой плоскости), сходство варьируется только от 0 до 1.
Принимая во внимание эту концепцию, сходство можно рассчитать с помощью следующего уравнения:

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

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

Определение проблемы:

  • Наша проблема - рекомендации фильмов. Учитывая матрицу [i, j], рассмотрите рейтинг i пользователей для фильмов j с оценкой пользователя, представленной целым числом от 1 до 5. Если фильму нет рейтинга, ему присваивается рейтинг 0;
  • Для каждого пользователя цель - порекомендовать серию фильмов, которые он не смотрел (рейтинг = 0);
  • Для каждого фильма j и пользователя i, которые не смотрели фильм, мы пытаемся найти пользователя из группы U, которая похожа на пользователя i кто смотрел фильм j;
  • Для каждого похожего пользователя u получите рейтинг фильма j и умножьте на косинус подобия пользователя i на u . Разделив результат на количество пользователей в наборе U, мы получим средневзвешенный рейтинг фильма j;
  • Теперь отсортируйте фильмы по среднему значению, полученному для каждого пользователя, и используйте это значение для оценки пользовательской оценки фильма, а затем порекомендуйте первые N фильмов в рейтинге для каждого пользователя.

Этот метод настолько похож на алгоритм KNN, что с некоторыми изменениями его можно использовать для решения проблемы рекомендации (которая будет объяснена позже).

Например: представьте, что я не смотрел фильм «Форрест Гамп», но я смотрел и оценивал многие другие фильмы. Все, что вам нужно сделать, это найти группу пользователей, которые смотрели фильмы, которые смотрел я, а также смотрели Форреста Гампа.

В этом примере предположим, что мы нашли 2 пользователей с предпочтениями, похожими на мои. Предположим, что первый на 90% похож на меня и дал фильму 5 звезд, а второй на 80% похож на меня и дал фильму 3 звезды. Для оценки моего рейтинга рассчитывается средневзвешенное значение (0,9 × 5 + 0,8 × 3) / 2 = 3,45.

Сюрприз

Surprise - библиотека Python для построения и анализа рекомендательных систем. Также имеется встроенный набор данных MovieLens со 100 000 оценок фильмов от 1 000 пользователей и 1 700 фильмов. Основная цель Surprise - дать своим пользователям полный контроль над своими экспериментами, предоставить несколько готовых к использованию алгоритмов прогнозирования, таких как SVD, методы соседства, меры сходства и инструменты для анализа и сравнения производительности алгоритмов.

Давайте исследуем Сюрприз.

Загрузите набор данных MovieLens 100k и импортируйте его в Python:

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

Метод build_anti_testset позволяет нам давать рекомендации новым пользователям, находя все пары пользователь-фильм в обучающем наборе, где пользователь не смотрел фильм, и создает «набор тестов» из этих записей. По его результатам мы сортируем и извлекаем 3 основных рекомендации для каждого пользователя:

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

Результат:

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

Как мы будем давать рекомендации новым пользователям?

Netflix предоставляет своим новым пользователям список для выбора контента, который им нравится. Я считаю, что с этого момента он дает рекомендации.

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

Ссылки

[1] К. Матье, А. Дас и Д. Рикеттс. Максимизация прибыли с помощью рекомендательных систем. WWW, 2010.

[2] Х. Антон. Элементарная линейная алгебра. John Wiley Sons, Incorporated, 1993.

[3] З. Гантнер, Х. С. С. Ньюэлл, Б. П. Книйненбург, М. К. Виллемсен. Объяснение пользовательского опыта рекомендательных систем, пользовательского моделирования и пользовательского взаимодействия. 2012 г.

[4] Т.Кинан. Что такое контентная фильтрация? Https://www.upwork.com/hiring/data/what-is-content-based-filtering/. Последний доступ 18 августа 2019 г.

[5] S.Luo. Введение в рекомендательную систему. https://towardsdatascience.com/intro-to-recommender-systemcollaborative-filtering-64a238194a26, 2018. Последний доступ 18 августа 2019 г.

[6] М. Надим. Как YouTube рекомендует видео. Https://towardsdatascience.com/how-youtube-recommends-videos-b6e003a5ab2f, 2018. Последний доступ 18 августа 2019 г.

[7] Netflix. Как работает система рекомендаций Netflix. https://help.netflix.com/pt/node/100639. Последний доступ 18 августа 2019 г.

[8] Р. Сентанс. Как повысить конверсию на 32%: пример использования системы рекомендаций. https://econsultancy.com/retail-case-study-personalisation-recommendation/, 2018. Последний доступ 18 августа 2019 г.

[9] Сюрприз. Обзор сюрприз. Http://surpriselib.com/. Последний доступ 18 августа 2019 г.

[10] З. Табаеи и М. Фатиан. Использование модели пожизненной ценности клиента для рекомендации продукта: пример электронной розничной торговли. IJEEEE, 2012.