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

Компания электронной коммерции обратилась к вам с просьбой создать рекомендательную систему, чтобы предложить три элемента на странице сведений о продукте. Их аналитические системы содержат около 30% истории покупок пользователя, и только 20% продуктов имеют историю оценок пользователей. Какой метод вы будете использовать для этого типа проблемы? Каков будет ваш метод оценки? RMSE, Precision, MRR, nDCG или любой другой?

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

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

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

Набор данных

Мы будем использовать набор данных Amazonfind Dine Food Review для реализации нашей модели рекомендаций. Вот как выглядит набор данных.

Вы можете найти код ноутбук здесь.

Мы будем использовать только три функции, а именно User Id Product Id и Score`.

Обратите внимание, что некоторые пользователи давали оценки одному и тому же продукту несколько раз.

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

Вот 5 строк нашего окончательного набора данных.

Набор данных содержит около 74 258 уникальных продуктов и 256 059 пользователей. EDA помогает понять взаимодействие пользователей и оценку, которую они дали продуктам.

ЭДА

60% оценок — пять звезд, а 20% — четыре звезды. Таким образом, 80% оценок были положительными.

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

Точно так же средний рейтинг продуктов составляет 4,16.

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

В отличие от взаимодействия с пользователем, среднее количество оцененных продуктов составляет 4,49. Это хороший знак, поскольку у нас есть больше продуктов с рейтингом, которые мы можем использовать в наших рекомендательных системах.

Если мы посмотрим на распределение количества раз, когда пользователи оценили какой-либо продукт, мы увидим две вещи.
Во-первых, независимо от того, сколько пользователей оценили, средний рейтинг (медиана) выше 4.
Во-вторых, пользователи с более низким рейтингом, от 1 до 20 оценок, имеют больший разброс в своих оценках.

Аналогичная тенденция наблюдается и на уровне продукта. Продукт с меньшим количеством оценок имеет более широкое распространение, то есть они также получили низкие оценки.

Это хорошая находка. Чем больше рейтинг получает продукт, тем выше его рейтинг.

Теперь у нас есть хорошее представление о наборе данных. давайте поработаем над созданием рекомендательной модели.

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

Алгоритмы

Мы обучим несколько алгоритмов, чтобы сравнить их производительность, чтобы получить лучшую рабочую модель.
Мы будем использовать:

  • Совместная фильтрация на основе элементов с косинусом, расстоянием Пирсона и евклидовым расстоянием для оценки сходства. Читайте здесь, чтобы понять, как рассчитывается сходство.
  • Разложение по одному значению, также известное как SVD
  • Чередование наименьших квадратов, также известное как ALS
  • Популярный
  • Случайный

Итак, у нас есть 7 алгоритмов. О восьмом поговорим в конце.

Мы оценим, как работает каждая модель, и выберем лучшую рабочую модель для нашей рекомендательной системы.

Мы будем использовать recommenderLab, пакет R, который поможет нам создать и оценить модели, которые нам нужны.

Примечание. Я пропустил IBCF, чтобы вы могли изучить и реализовать его.

Обучение модели

RecommenderLab работает с набором данных realRatingMatrix. Поэтому мы должны преобразовать в него наш фрейм данных.

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

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

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

Хотя нам нужно порекомендовать три продукта на странице продукта, мы также оценим, как работает модель, если потребуется более трех продуктов.

Давайте обучим наши модели.

Наша цель — создать рекомендательную систему для страницы сведений об элементе. Одним из основных требований является то, что мы можем предложить только три позиции. Поэтому мы должны убедиться, что выбраны наиболее релевантные продукты. Точность может помочь нам оценить именно это.
Читайте здесь, чтобы узнать больше о методах оценки для рекомендательных систем.

Вот кривая ROC всех алгоритмов

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

IBCF_Pearson близок к SVD с небольшим количеством предложений элементов, то есть до трех предложений. Но по мере увеличения количества предложений SVD оказывается абсолютным победителем.

Здесь следует отметить еще одну вещь: хотя SVD лучше, с большим количеством предложений разрыв между SVD и IBCF_Pearson сокращается. Возможно, IBCF_Pearson может улучшить SVD там, где требуется больше предложений продуктов, например 50 предложений продуктов на страницах со списком продуктов. Что-то для вас, чтобы попробовать и изучить.

Давайте посмотрим на точность и отзыв этих моделей.

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

Ниже приведены показатели путаницы для двух лучших моделей.

Гибридный

Несмотря на то, что SVD была нашей лучшей моделью, IBCF с Pearson также имела лучшую производительность и могла бы превзойти SVD, если бы ей пришлось предлагать больше продуктов.

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

Поскольку SVD работает лучше, мы придаем ему большее значение, чем IBCF.

Давайте посмотрим на кривую ROC.

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

Последние мысли

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

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

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

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

Похожая статья, которая может вам понравиться