Исследовательский анализ данных Spotify и кластеризация K-средних для переклассификации музыкальных жанров

Почему супержанр?

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

По мере развития нашего общества развивалась и музыка. Чем больше мы становились глобально связанными и обогащались разнообразными культурами, тем больше звуков открывалось. Музыка вобрала в себя все эти изменения, и теперь она почти чрезмерно разделена на множество жанров, от поп-музыки до мятлика. Даже внутри поп-музыки есть несколько поджанров, таких как к-поп, сити-поп и христианская поп-музыка.

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

Сбор данных

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

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

Используя идентификаторы треков, я смог собрать 19 характеристик для каждого трека: название трека, альбом, исполнитель, дата выпуска, продолжительность (мс), популярность, акустика, энергия, тональность, модальность, инструментальность, живость, громкость, речь, валентность, темп, тактовый размер и жанр. Жанр был уникальным случаем, поскольку Spotify имеет информацию о жанре только на основе исполнителей, а не треков. Поэтому я использовал идентификатор исполнителя для получения жанра.

Определения этих функций см. в справочнике Spotify здесь.

Очистка данных

RangeIndex: 9943 entries, 0 to 9942
Data columns (total 20 columns):
 #   Column            Non-Null Count  Dtype  
---  ------            --------------  -----  
 0   Unnamed: 0        9943 non-null   int64  
 1   name              9943 non-null   object 
 2   album             9943 non-null   object 
 3   artist            9943 non-null   object 
 4   release_date      9943 non-null   object 
 5   duration_ms       9943 non-null   int64  
 6   popularity        9943 non-null   int64  
 7   acousticness      9943 non-null   float64
 8   danceability      9943 non-null   float64
 9   energy            9943 non-null   float64
 10  key               9943 non-null   int64  
 11  mode              9943 non-null   int64  
 12  instrumentalness  9943 non-null   float64
 13  liveness          9943 non-null   float64
 14  loudness          9943 non-null   float64
 15  speechiness       9943 non-null   float64
 16  valence           9943 non-null   float64
 17  tempo             9943 non-null   float64
 18  time_signature    9943 non-null   int64  
 19  genres            9943 non-null   object

Исходный набор данных содержал 20 объектов и 9 943 записи треков. Из этих функций «Безымянный: 0» не имеет смысла и поэтому будет удален. Наше основное внимание уделялось подгруппам жанров, но «жанр» был представлен в виде списка, поскольку каждый трек можно разделить на несколько жанров. Поэтому я реструктурировал набор данных, чтобы сгруппировать его по жанрам. Строковые характеристики (название трека, исполнитель, альбомидата выпуска) всех треков одного жанра будут добавлены к списку, а средние значения всех этих числовых значений особенности станут представителями. Теперь у нас есть набор данных с 19 столбцами и 1019 записями жанров.

RangeIndex: 1019 entries, 0 to 1018
Data columns (total 19 columns):
 #   Column            Non-Null Count  Dtype  
---  ------            --------------  -----  
 0   genre             1019 non-null   object 
 1   name              1019 non-null   object 
 2   album             1019 non-null   object 
 3   artist            1019 non-null   object 
 4   release_date      1019 non-null   object 
 5   duration_ms       1019 non-null   float64
 6   popularity        1019 non-null   float64
 7   acousticness      1019 non-null   float64
 8   danceability      1019 non-null   float64
 9   energy            1019 non-null   float64
 10  key               1019 non-null   float64
 11  mode              1019 non-null   float64
 12  instrumentalness  1019 non-null   float64
 13  liveness          1019 non-null   float64
 14  loudness          1019 non-null   float64
 15  speechiness       1019 non-null   float64
 16  valence           1019 non-null   float64
 17  tempo             1019 non-null   float64
 18  time_signature    1019 non-null   float64

Создание супержанра (кластеризация K-средних)

I. Оригинальное распределение по жанрам

Как вы можете видеть выше, слишком много жанров даже в относительно небольшом наборе данных, который я использую для этого проекта. Из 1019 жанров это топ-50 самых распространенных жанров и «Другое», куда входят остальные. Как ни естественно это может показаться, «Поп» является категорией номер один, за ней следует «Дэнс-поп», который является поджанром поп-музыки.

II. Кластеризация K-средних

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

from kneed import KneeLocator
kl = KneeLocator(range(1, 50), sse, curve="convex", direction="decreasing")
kl.elbow

Из кода и графика видно, что оптимальное количество кластеров равно 12. Это и будет наше количество супержанров.

Супержанровый анализ

Перед объединением в 12 супержанров функции были масштабированы таким образом, чтобы их можно было сравнивать друг с другом. Есть несколько бинарных функций (например, режим), но поскольку они стали значениями между 0 и 1, когда мы усреднили значения всех дорожек, я считаю, что можно безопасно включить и те, которые нужно масштабировать.

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

I. Супержанр 0: «Разное»

Включенные исполнители:
Relient K, With Confidence, The Lemon Twigs, Lil Wayne…
Включенные песни:
Look on Up, Keeper , Я хочу доказать вам, как любить…
Общее количество жанров: 44 (4,3%)

Супержанр 0 имеет относительно низкую популярность и высокий темп и тональность. Более того, из распределения облаков слов мы можем видеть различные описания, такие как «канадский», «школа» и «христианин», а также «инди» и «металл». 3 самых популярных жанра в супержанре 0: "canadian ccm", "anthem emo" и "athens indie".

Имея множество специализированных жанров в этом кластере, я считаю, что имеет смысл назвать эту группу Разное.

II. Супержанр 1: «Электронный»

Включенные исполнители:
Diplo, Iggy Azalea, RJD2, TobyMac…
Включенные песни:
Be Right There, Black Widow, Peace of Что, вернись…
Общее количество жанров: 108 (10,6%)

Здесь танцевальность и валентность высоки, а популярность и громкость умеренные. «поп», «хип-хоп», «хаус» и «дэнс» обычно встречаются среди всех жанров, что указывает на какую-то танцевальную и электронную музыку. Кроме того, три основных жанра в этом кластере: "house", "uk dance" и "hip hop из Майами".

В заключение, супержанр 1 будет называться Электронный.

III. Супержанр 2: Альтернатива

Включенные исполнители:
Flume, Gallant, Little Dragon, HYUKOH…
Включенные песни:
Drop the Game, Bourbon, Twice, Citizen Кейн…
Общее количество жанров: 191 (18,7%)

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

Учитывая эти, казалось бы, противоречивые характеристики, я решил назвать этот супержанр Альтернатива.

IV. Супержанр 3: неоклассика

Включенные исполнители:
Nils Frahm, Goldmund…
Включенные песни:
Them (Solo Piano Edit), As Old Roads…
Общее количество жанров: 14 (1,4%)

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

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

V. Супержанр 4: пост-рок

Включенные исполнители:
Explosions In The Sky, Fennesz, HTRK, Tycho…
Включенные песни:
Your Hand In Mine, Haru, Chinatown Style, L…
Общее количество жанров: 20 (2,0%)

Популярность, танцевальность и красноречие низкие, в то время как инструментальность, живость, акустика и продолжительность высоки. Обычно показаны «пост», «рок», «инди» и «гитара». Три основных жанра в этом кластере: "гавайский", "американский пост-рок" и "пост-рок".

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

VI. Супержанр 5: Панк

Включенные исполнители:
Simple Plan, Anushka, Neck Deep, White Lung…
Включенные песни:
Gone Too Soon, Kisses, December , Ниже…
Общее количество жанров: 41 (4,0%)

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

Как один из часто встречающихся терминов, панк будет названием супержанра 5.

VII. Супержанр 6: Поп

Включенные исполнители:
Katy Perry, Coldplay, Tove Lo, Alicia Keys…
Включенные песни:
Firework, Yellow, Talking Body, Если я тебя не понял…
Общее количество жанров: 269 (26,4%)

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

Показывая очевидные черты, мы назовем этот супержанр Pop.

VIII. Супержанр 7: инди-поп

Включенные исполнители:
Hippo Campus, Parachute, Asaf Avidan, ASADI…
Включенные песни:
Boyish, She Is Love, Over My Глава, Трон…
Общее количество жанров: 20 (2,0%)

Прежде чем вдаваться в подробности, имейте в виду, что все функции имеют отрицательные значения. Этот кластер имеет умеренную популярность, высокую акустику и инструментальность. Кластер содержит «инди», «экспериментальный», «поп» и «автор песен» как некоторые из часто встречающихся слов. Более того, первые три жанра – это "инди из Миннеаполиса", "инди из Шарлоттсвилля" и "исландский певец и автор песен".

Таким образом, можно сделать вывод, что этот супержанр можно назвать Indie Pop.

IX. Супержанр 8: Рок-н-ролл

Включенные исполнители:
Elvis Presley, The Emotions, Jain, Spoon…
Включенные песни:
Suspicious Minds, Best of My Love, Makeba, The Underdog…
Общее количество жанров: 127 (12,5%)

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

Жанр, который потенциально может включать в себя разнообразные черты этого супержанра, — это рок-н-ролл, поскольку он происходит от госпела, джамп-блюза, джаза, буги-вуги, ритма и блюз, а также кантри (честно говоря, я видел имя Элвиса Пресли в списке исполнителей и не мог придумать никакого другого жанра).

X. Супержанр 9: хип-хоп

Включенные исполнители:
Fetty Wap, Lil Wayne, Drake, Chance the Rapper…
Включенные песни:
Trap Queen, How To Love , Горячая линия, Нет проблем…
Общее количество жанров: 96 (9,4%)

А, еще один простой кластер у нас здесь! Suer-genre 9 обладает высокой красноречивостью и популярностью. Кроме того, общие слова включают «хип», «хоп», «рэп» и «ловушка» (!). И, наконец, первые три жанра — это "поп-рэп", "рэп" и "хип-хоп".

Благодаря очевидным признакам супержанр 9 будет называться Хип-хоп.

XI. Супержанр 10: Меланхолия

Включенные исполнители:
Бен Ректор, Донован, Александр Асп, Стергилл Симпсон…
Включенные песни:
White Dress, Hurdy Gurdy Man, Холодная зимняя любовь, жизнь греха…
Общее количество жанров: 72 (7,1%)

Этот кластер показывает уникальную черту из всех кластеров. В то время как другие супержанры концентрируются на музыкальных особенностях, этот супержанр больше внимания уделяет эмоциональным характеристикам, таким как мода и валентность (низкая). Кроме того, энергия, танцевальность и красноречие низкие, а акустика высокие. Такие слова, как «фолк», «джаз», «инди» и «певец», появляются часто, а три самых популярных жанра: «меланхолия», «инди-гимн-фолк»,и« камерная поп-музыка».

Вслед за самым доминирующим жанром в этом кластере супержанр 10 будет называться Меланхолия.

XII. Супержанр 11: Фанк

Включенные исполнители:
The Radio Dept., The Meters, White Town…
Включенные песни:
Heaven's On Fire, Cissy Strut, Ваша женщина…
Общее количество жанров: 17 (1,7%)

И последнее, но не менее важное: супержанр 11 отличается выдающейся инструментальностью. Чаще всего встречаются термины «фанк», «инди», «инструментал» и «транс». Три самых популярных жанра: "лунд-инди", "скандинавский шугейз" и "исландский фолк".

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

XIII. Текущие ограничения

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

Кроме того, я считаю, что PCA (анализ основных компонентов) может дать лучшие результаты кластеризации супержанров, поскольку он сужает количество функций до самых «важных». На данный момент существует 14 признаков, определяющих кластеры. Если мы сможем уменьшить количество функций и запустить кластеризацию K-средних, мы сможем гораздо проще сравнивать вновь созданные функции среди кластеров, иметь более четкое различие и лучшее понимание.

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

Какой жанр мне нравится в эти дни?

Теперь, возвращаясь к основной причине, по которой я начал этот проект, я хотел понять, в каком жанре (жанрах) я сейчас работаю. Я использовал свой последний созданный список воспроизведения (который содержит 103 песни) в качестве образца набора данных. Извлекая признаки точно так же, как я делал с набором данных супержанров, я затем использовал K-NN (ближайшие соседи), чтобы узнать метки супержанров для набора данных образца. Здесь набор данных супержанра будет обучающим набором, а образцовый набор данных станет тестовый набор.

И результат выглядит так:

Кажется, я очень увлекаюсь поп-музыкой, альтернативойиэлектроникой, и, к сожалению, я не большой поклонник Post Rock. Как меломан-подражатель, это несколько разочаровывает, поскольку я ожидал, что появится больше неосновных супержанров. Также кажется, что я начинаю интересоваться Меланхолией, так как осенний сезон вызывает во мне эмоции. Итак, Spotify, если вы читаете это, пожалуйста, порекомендуйте мне больше песен, основанных на моих любимых супержанрах!