Система рекомендаций

Создание системы музыкальных рекомендаций с использованием 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 и скажите Привет!, Это сделает мой день.