Метод ближайшего соседа

Система рекомендаций есть везде. Amazon, Facebook, Youtube, Netflix и т. д. используют систему рекомендаций, чтобы рекомендовать продукты своим пользователям. Эти системы рекомендаций дают пользователям восхитительный опыт, поскольку они помогают пользователям находить продукты, которые им подходят лучше всего. Давайте узнаем, как работают эти рекомендательные системы.

Существует три способа Рекомендации:

  1. Рекомендация похожих продуктов, которые могут понравиться пользователю — Фильтрация на основе содержания — помогает создать персонализированную рекламу для пользователя.
  2. Рекомендация продуктов, которые понравились другим похожим пользователям — совместная фильтрация — помогает создать персонализированную рекламу для пользователя.
  3. Рекомендация дополнительных продуктов — Изучение правил ассоциацииg — работает на основе условной вероятности. (Найти вероятность покупки продукта при наличии других купленных товаров)) — помогает создать продвижение продукта.

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

Набор данных MovieLens.

Этот набор данных состоит примерно из 20 миллионов пользовательских оценок, примененных к 27 000 фильмам 138 000 пользователей. Кроме того, фильмы содержат информацию о жанре и дате. Мы будем использовать этот набор данных для создания метода ближайшего соседа в совместной фильтрации.

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

Во-первых, давайте посмотрим на данные рейтинга.

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

Теперь давайте удалим все фильмы, которые оценили не более 50 пользователей.

Точно так же давайте также удалим всех пользователей, которые оценили (просмотрели) фильмы не более чем 20 пользователей.

Давайте создадим матрицу оценок пользователей и фильмов, используя сводную таблицу Pandas.

Следующим шагом будет функция, которая вычисляет сходство между двумя пользователями. Мы будем использовать расстояние Хэмминга для расчета расстояния между пользователями. Расстояние Хэмминга между одномерными массивами u и v — это просто доля несовпадающих компонентов в u и v >.

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

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

Вот и все . Мы построили рекомендательную систему.

Давайте посмотрим на три лучших фильма, которые эта система рекомендует случайному пользователю (скажем, идентификатор пользователя 875).

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

Давайте выясним, есть ли у пользователя 875 рекомендуемые жанры (комедия, драма, романтика) в списке 10 любимых.

Да! Комедия, драма, романтика действительно являются фаворитами пользователя 875, и поэтому код рекомендации выбрал фильмы из этих жанров для этого пользователя!!

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

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