Проект Мохамеда Насрелдина, Стивена Ма, Эрика Дейли, Фук Данг

ВВЕДЕНИЕ

DJ Khaled смело заявлял, что всегда знает, когда песня станет хитом. Мы решили продолжить расследование, задав три ключевых вопроса: есть ли определенные характеристики у хитов, каковы наибольшие факторы, влияющие на успех песни, и могут ли старые песни даже предсказать популярность новых песен? Предсказать, насколько популярной будет песня, - непростая задача. Чтобы ответить на эти вопросы, мы использовали Набор данных миллиона песен, предоставленный Columbia, API Spotify и модели прогнозирования машинного обучения. Мы представляем модель, которая может предсказать, насколько вероятно, что песня станет хитом, определенная путем попадания в первую сотню Billboard, с точностью более 68%.

ИСТОРИЯ

В 2017 году только в Соединенных Штатах музыкальная индустрия принесла 8,72 миллиарда долларов. Благодаря растущим потоковым сервисам (Spotify, Apple Music и т. Д.) Индустрия продолжает процветать. Популярные песни обеспечивают львиную долю доходов. В 2016 году 10 лучших художников принесли общий доход в размере 362,5 миллиона долларов. Вопрос о том, что делает песню популярной, изучали с разной степенью успеха. Каждая песня имеет ключевые характеристики, включая текст, продолжительность, информацию об исполнителе, темп, ритм, громкость, аккорд и т. Д. Предыдущие исследования, которые рассматривали тексты для прогнозирования популярности песни, имели ограниченный успех.

СБОР И ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА ДАННЫХ

Получение данных

В качестве набора данных был выбран Набор данных миллиона песен, предоставленный Колумбийским университетом и извлеченный из Echo Nest. Мы выбрали этот набор данных из-за его большого количества функций и размера. Основная проблема с этим набором данных заключалась в предоставленном формате. Для каждой песни были предоставлены индивидуальные файлы h5. Был предоставлен сценарий для преобразования набора данных в файлы mat, которые будут использоваться с Matlab. Мы изменили скрипт так, чтобы он создавал CSV, который мы могли использовать для обучения наших моделей. Набор данных тоже был слишком большим. Всего на миллион песен вышло около 280 ГБ. К счастью, было случайно выбранное подмножество, состоящее всего из 10 000 песен.

Каждая песня в наборе данных содержит 41 функцию, сгруппированную по аудиоанализу, информации об исполнителе и функциям, связанным с песнями.

Функции анализа звука: темп, продолжительность, режим, громкость, тональность, размер, начало раздела

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

Особенности, связанные с песней: релизы, название, год, популярность песни

Очистка песен BillBoard

Исходные данные в наборе данных «Миллион песен» содержат функцию «горячей» песни. Однако около 4500 песен отсутствовали в этой функции, что составляет почти половину того подмножества, которое мы использовали. Таким образом, мы хотели найти новый способ определить, является ли песня хитом или нет. Мы решили использовать BillBoard Top 100 для определения популярности. Если песня хотя бы один раз попадала в Топ-100 BillBoard, она будет классифицирована как хит.

Мы написали скрипты Python с помощью BeautifulSoup, чтобы очистить billboard.com и получить все песни, которые появлялись в чарте с 1958 по 2012 год. Мы остановились на 2012 году, так как наши самые последние песни в наборе данных были выпущены в 2012 году. После получения списка песен которые были на рекламном щите, мы возвращаемся к нашему набору данных из 10 000 песен и соответствующим образом классифицируем их. Из 10 000 песен в нашем наборе данных 1192 песни были классифицированы как популярные.

Очистка набора данных

Многие поля в наборе данных были непригодны для использования из-за устаревших данных. Многие поля данных отсутствовали, и не было echonest API для заполнения данных, так как API был изменен Spotify. Поэтому пришлось отбросить многие поля. Для некоторых функций, которым не хватало только разумного количества, мы решили заполнить недостающие значения средним. Примером этого является поле знакомств художника, в котором пропущено всего 10 значений.

Идентификатор исполнителя и режим двух функций были изменены, чтобы лучше отражать их свойства в наборе данных. Каждый исполнитель в данных однозначно идентифицируется строкой, поэтому мы решили сделать для них кодирование этикеток. Mode - это то, использует ли песня мажор или минор в своей постановке. Хотя это значение является простым с 0 для второстепенного и 1 для основного, было также значение с именем mode_confidence, которое отображало вероятность того, что выбранный режим будет точным. С этими двумя значениями мы объединили функции в диапазоне от -1 для второстепенного до 1 для основного. Значение -1 представляет 100% уверенность в том, что ключ является второстепенным, а 1 представляет 100% уверенность в том, что ключ является второстепенным. Диапазон достоверности незначительной лжи от -1 до 0 и диапазон достоверности большой лжи от 0 до 1. Это значительно повысило важность этого значения, как мы увидим в следующем разделе.

Процесс можно резюмировать следующим образом:

  1. Загрузите подмножество данных из labrosa Columbia
  2. Преобразование формата данных из h5 в фрейм данных
  3. Очистите песни, которые попали в чарт Top 100 BillBoard
  4. Секретные песни в данных
  5. Очистка набора данных

ИССЛЕДОВАНИЕ ДАННЫХ

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

Важность функций

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

Знакомство с художником

Знакомство с артистами vs. горячность песни

Как и следовало ожидать, близость художника имеет отношение к значению привлекательности. По оси Y отложена яркость песни Y, где 0 - самый низкий балл, а 1 - самый высокий балл. Знакомство находится на оси x и также находится в диапазоне от 0 до 1, что указывает на то, насколько «знаком» художник, на основе алгоритма Echo Nest. По мере приближения этого значения к 1, яркость песни также приближается к 1 (кто бы мог подумать?).

Местоположение исполнителя

Долгота артиста против жаркости песни

Мы также можем увидеть некоторые интересные тенденции на графике выше. Хотя, как правило, больше активности в регионах, которые также производят хиты, мы видим, что хиты сосредоточены вокруг этих конкретных областей. Большая часть активности происходит с западной стороны мира, а в Северной Америке мы также можем видеть разделение между восточным и западным побережьями. Таким образом, мы можем ожидать, что модель будет использовать это, чтобы предсказать, является ли песня хитом.

Темп и продолжительность

Нас интересовало распределение хитов, поэтому мы выделили все песни со значением яркости 1 и построили график распределения различных функций для этих песен. Мы можем видеть, что для темпа был диапазон, который обычно используется в горячих песнях, и было два пика в этом диапазоне примерно на 100 и 135 ударов в минуту. Продолжительность горячих песен составляла в среднем около 200 секунд, а общая продолжительность варьировалась от 3 до 4 минут.

Для песен, вошедших в топ-100 Billboard, мы проанализировали среднее значение и стандартное отклонение для некоторых основных функций, которые мы обнаружили ранее с использованием показателя f1, и результаты были довольно разумными. Темп был около 122 ударов в минуту и ​​имел стандартное отклонение 33 ударов в минуту, знакомство с исполнителем было на 61% и имело стандартное отклонение 16%, большинство песен были в мажорной тональности, но стандартное отклонение было довольно большим, громкость была около - 10 дБ, а яркость артиста составила около 0,43. Информация об артистах показывает, что большинство из этих артистов, должно быть, были «чудо-исполнителями» из-за отсутствия у них яркости и узнаваемости.

ВЫБОР И НАСТРОЙКА МОДЕЛИ

Мы обучили наши данные на разных моделях, чтобы предсказать, станет песня хитом или нет. Xgboost, по-видимому, имеет наивысшую точность при 0,63 балла под кривой (AUC) до настройки. В таблице ниже показаны результаты некоторых моделей, которые мы пробовали.

Поиск по сетке был запущен на XGBoost для дальнейшего улучшения показателя AUC. Каждый параметр был настроен, и некоторые значения были настроены одновременно. Например, n_estimators и скорость обучения были настроены вместе, поскольку более высокое значение n_estimators требовало более низкой скорости обучения для получения оптимальных результатов. При настройке показатель AUC увеличился с 0,632 до 0,68. Случайные предсказания дадут оценку 0,5 AUC.

РЕЗУЛЬТАТЫ

Этот проект продемонстрировал возможность прогнозирования популярности музыки, выявил тенденции в популярной музыке и разработал инструменты для извлечения функций с использованием Spotify API. XGBoost предоставил лучшие прогнозы на модели обучения с показателем AUC 0,68.

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

С тех пор, как Spotify приобрела EchoNest, было изменено множество различных функций, включая простой способ поиска информации о песне по идентификатору. Из-за этого демо использует очень окольный способ получения информации о песне. Сначала выполняется поиск с использованием конечной точки поиска в API, чтобы получить идентификатор Spotify. Затем с помощью звуковых функций Spotify ID и подробного анализа звука можно получить песню. Затем выполняется некоторая разработка функций, чтобы преобразовать данные Spotify обратно в формат, который можно использовать для нашей модели. Сценарий, который мы разработали для сопоставления данных Spotify API с нашими обучающими данными, можно посмотреть здесь.

Ниже приведены результаты некоторых других песен, которые предсказала наша модель, а также результаты популярности Spotify для сравнения:

ЗАКЛЮЧЕНИЕ

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

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

Полный исходный код можно посмотреть здесь