Система рекомендаций
Создание системы музыкальных рекомендаций с использованием Python
Познакомьтесь с Tableau и создайте систему рекомендаций совместной фильтрации
Привет, народ! Системы рекомендаций распространены повсюду и довольно стандартны для всей сети. Amazon, Netflix и многие подобные компании используют системы рекомендаций. Тот, который мы собираемся создать, довольно типичен для Spotify или Youtube Music, но гораздо проще.
Инструменты, необходимые для выполнения, - это Tableau и Python3. Вы можете скачать Табло здесь. Позвольте мне сначала познакомить вас с набором данных, а позже я дам краткое введение в Tableau в разделе визуализации данных.
Набор данных
Ниже приведены ссылки на наборы данных:
Https://static.turi.com/datasets/millionsong/10000.txt
Https://static.turi.com/datasets/millionsong/song_data.csv
Это два набора данных, которые нам нужно объединить. Мы собираемся использовать Python3 для подключения набора данных и импорта его в Tableau для визуализации данных.
#importing all the required libraries import numpy as np import pandas as pd #importing both the datasets songmetadata = pd.read_csv(r'Path where the file is located') #one of the file is a text file hence we import it with pd.read_fwf #fwf stands for fixed width file othersongdata = pd.read_fwf(r'Path where the file is located') #naming the columns for the othersongdata othersongdata.columns = ['user_id','song_id','listen_count’] #merging both the datasets and removing duplicates song_df = pd.merge(othersongdata, songmetadata.drop_duplicates(['song_id']), on="song_id", how="left") #writing the file in .csv to visualize in Tableau song_df.to_csv(r'Path where you want to store the exported CSV file\File Name.csv', index = False)
После объединения набора данных мы получаем набор данных из миллиона песен. В наборе данных более миллиона наблюдений. Набор данных состоит из семи переменных.
Song_id = Object #Unique ID for every song in the dataset, in total there are 1000 songs in the dataset User_id = Object #Unique ID for every user Listen_count = int #Number of times a song was listened by an user Artist_name = Str #Name of Artist Title = Str #Title of each song Year = int #Categorical variable with lot of zero values Release = Str #Album to which the songs belong to
Визуализации данных
«Визуализация дает ответы на вопросы, о которых вы даже не подозревали». - Бен Шнайдерман
Всегда полезно визуализировать данные, понимать их и находить идеи. Я использую Tableau, потому что он быстрый и дает массу возможностей для визуализации наборов данных. Tableau значительно улучшил мой рабочий процесс, а также упоминал ли я, что это бесплатно для студентов?
Что такое TreeMaps?
Я не собираюсь врать, и я люблю TreeMaps. Я широко использовал их в этом проекте для отображения данных. Они красивы, настраиваемы и требуют внимания.
Википедия уже объяснила это в чрезвычайно удобоваримом формате, чем я когда-либо мог, посмотрите это ниже:
На древовидных картах отображаются иерархические (древовидные) данные в виде набора вложенных прямоугольников. Каждой ветви дерева дается прямоугольник, который затем выложен меньшими прямоугольниками, представляющими подветви. Прямоугольник конечного узла имеет площадь, пропорциональную указанному измерению данных. [1] Часто листовые узлы окрашены, чтобы показать отдельное измерение данных. - Википедия
Tableau
Во время написания этой статьи я подумал, как лучше всего объяснить кому-то «Как создавать TreeMaps в Tableau?». И я не хотел идти по маршруту скриншотов. Что я мог сделать? Итак, я сделал легкое для понимания видео.
Чтобы получить данные в Tableau, вам необходимо преобразовать .csv в книгу Excel. Вы можете легко сделать это с помощью следующей команды на Python:
song_df.to_excel("millionsong.xlsx")
Иногда преобразование занимает уйму времени, поэтому я предоставляю готовую для загрузки книгу Excel здесь.
Это ни в коем случае не исчерпывающее руководство по Tableau, и это просто обзор, который познакомит вас с тем, как работает Tableau и как создаются TreeMaps. Чтобы изучить Tableau, пройдите бесплатное обучение, которое официальный сайт Tableau предоставляет здесь.
Первая TreeMap представляет долю переменной Year в наборе данных по отношению к Listen_count. График показывает, что в наборе данных много нулей. Поскольку мы не собираемся использовать переменную Год при создании системы рекомендаций по музыке, мы не собираемся удалять эти наблюдения.
Вторая TreeMap представляет исполнителя в отношении общего Listen_count в наборе данных. Coldplay - самый популярный исполнитель в наборе данных с 36 406 обращениями, за ним следует Kings Of Leon с 32 552 обращениями.
Бизнес-проблема
Слишком много вариантов может ошеломить пользователей. Если предлагается слишком много вариантов, пользователь может ничего не покупать. У потоковых сервисов, таких как Spotify, огромные каталоги. Определение треков, которые могут понравиться пользователю, и рекомендация продукта, который может им понравиться, имеет решающее значение для их бизнеса.
Мы собираемся создать два плейлиста, один из которых будет популярным плейлистом, а второй - определить песни, которые похожи на песню, которая уже нравится пользователю, - следовательно, дать им персональные рекомендации.
Системы рекомендаций
Системы рекомендаций на основе содержания
CBRS рекомендует товары на основе их характеристик и сходства между элементами других товаров. Предположим, пользователь уже смотрел фильм из жанра комедия, CBRS порекомендует фильмы, которые также относятся к жанру комедии.
Система рекомендаций совместной фильтрации
При создании CFRS учитываются предпочтения и отношение пользователей. CFRS рекомендует предметы, похожие на то, что пользователь уже выбрал. Мы собираемся использовать корреляцию Пирсона для расчета взаимосвязи между похожими треками.
Почему мы не используем ассоциацию, а не корреляцию?
Ассоциация описывает только взаимосвязь между двумя переменными, в то время как корреляция описывает не только взаимосвязь, но и силу. Следовательно, когда мы создаем систему рекомендаций совместной фильтрации, мы используем корреляцию.
Давайте погрузимся в код!
Сначала мы создадим Популярный плейлист. Все, что нам нужно, - это обработка данных. Я пробовал объяснять код в комментариях. Тем не менее, если у вас есть вопросы, вы можете прокомментировать их ниже.
Теперь мы собираемся создать CFRS и создать Персонализированный список воспроизведения. Наблюдение, которое я использовал, и результаты Системы рекомендаций приведены ниже.
Если ты все еще со мной, спасибо. Кто-то, отрываясь и выполняя мою работу, очень много значит. Не стесняйся, потому что я. Пожалуйста, свяжитесь со мной в моем LinkedIn и скажите Привет!, Это сделает мой день.