Команда: Ашита Бойина, Рахул Дахия, Сай Чандан, Аруним Гупта

Мы всегда ищем новые способы улучшить наш музыкальный опыт. Наше музыкальное путешествие мы начали с прослушивания радиопередач, просмотра телевизионных каналов, а затем скачивания известных сайтов для прослушивания в офлайне.

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

Мы представляем модели Multi Classification для классификации предоставленного набора музыкальных данных по отдельным музыкальным жанрам. Мы тщательно экспериментировали с 7–8 моделями машинного обучения, чтобы добиться максимально возможной производительности, включая настройку гиперпараметров.

В этой статье не слишком много технических подробностей. Для более точной информации: https://github.com/ashcode028/Music-Genre-Classification

1. Описание набора данных

Набор данных, с которым мы будем работать для этого проекта, — GTZAN (знаменитый набор данных GTZAN, MNIST звуков), состоящий из 1000 звуковых дорожек, каждая по 30 секунд. Он содержит десять жанров, каждый из которых представлен 100 треками.

Десять жанров следующие:

  • Блюз
  • Классический
  • Страна
  • Дискотека
  • Хип-хоп
  • Джаз
  • Металл
  • Поп
  • Регги
  • Камень

А теперь давайте углубимся в детали...

2. Функция извлечения аудиосигнала

У нас есть аудиофайлы и извлекаемая информация для понимания модальным. Итак, мы попытались исследовать музыку с точки зрения волновых форм. Существует два способа представления сигналов: во временной области и в частотной области.

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

Затем мы выполнили преобразование Фурье, чтобы преобразовать их в частотную область, чтобы извлечь больше информации, такой как тембр, высота тона и т. д. Мы получили два типа функций: спектральный и ритм.
В Python есть пакет под названиемLibrosa. для анализа музыки и звука. Для получения дополнительной информации об этом вы можете обратиться здесь.

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

2.1 Визуализации

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

Стандартизация: цель этого состоит в том, чтобы равномерно распределить диапазон непрерывных начальных переменных, чтобы все они в равной степени вносили вклад в исследование.

Не забудьте стандартизировать данные перед PCA. В частности, необходимо применять стандартизацию перед PCA, потому что последний чувствителен к отклонениям исходных переменных. Предположим, что диапазоны начальных переменных существенно различаются. В этом случае переменные с более широкими диапазонами будут доминировать над переменными с меньшими степенями (например, переменная в диапазоне от 0 до 100 будет доминировать над переменной в диапазоне от 0 до 1), что приведет к смещенным результатам. В результате преобразование данных в эквивалентные масштабы может помочь избежать этой проблемы.

3. Различные классификаторы

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

Мы использовали настройку гиперпараметров, чтобы найти идеальные параметры для логистической регрессии, Random Forest, Naive Bayers, SGD, KNN и классификаторов. Для SVM и MLP мы вручную изменяли параметры, пока не нашли оптимальные.

Кроме того, для укрепления деревьев решений и базовых моделей Random Forests я применил различные подходы к повышению, такие как повышение градиента, усиление ADA, усиление кошки, повышение перекрестного градиента и усиление перекрестного градиента.

Основным конвейером для всех моделей было создание базовой модели с параметрами по умолчанию. Затем выполните настройку гиперпараметров, чтобы улучшить производительность базовой модели. Мы сделали ручную настройку HP для SVM, DT, RF, XGB.

3.1 Логистическая регрессия

В этой модели используется алгоритм предиктивного анализа, основанный на понятии вероятности. Это хорошо работает для категориальных переменных (как жанры в нашем случае)

GridSearchCV использовался для передачи в модель всех комбинаций гиперпараметров, и мы выбрали лучшие параметры. Это повысило точность с 67% до 70%.

3.2 Классификатор SGD

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

Наша простая модель SGD дала точность 61%. Он увеличился до 64% ​​после настройки HP. Это было связано с некоторыми неэффективными жанрами, такими как рок, диско и кантри.

3.3 Гауссовский наивный алгоритм Байера

Наивные байесовские классификаторы основаны на теореме Байеса. Теорема Байеса используется для создания наивных байесовских классификаторов. Предположения о высокой независимости между функциями являются одним из сделанных предположений. Эти классификаторы предполагают, что значение одного признака не связано со значением любого другого признака. Это вероятностный классификатор, делающий прогнозы на основе вероятности объекта.

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

3.4 КНН

Алгоритм K-ближайшего соседа основан на методе контролируемого обучения. Это один из самых простых алгоритмов машинного обучения. Он основан на идее, что каждая точка данных, близкая к другой, принадлежит к одному и тому же классу.[Подробнее]

Эта модель дала точность 86%, а мы получили точность 90% с настройкой гиперпараметра. По сравнению с гауссовскими моделями NB эта модель была лучше, поскольку она работает с кластеризацией. Мы заметили, что после настройки HP корреляция между функциями уменьшилась; некоторые имели даже 0 корреляции.

3.5 Деревья решений

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

Деревья решений работали хуже, чем ансамблевые подходы. Catboost превзошел все ансамблевые методы с точностью 82 %. Повышение градиента было достаточно близким, в то время как все остальные находились в диапазоне 50–60%. CatBoost имел высокую AUC для всех жанров, в отличие от градиента, который имел низкую точность для некоторых жанров.

3.6 Случайный лес

Случайный лес — это алгоритм обучения с учителем. Случайный лес создает множество деревьев решений и смешивает их для создания более точного и надежного прогноза.

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

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

В нашем случае он показал хорошие результаты для одних жанров и очень плохие для других. Даже с HPtuning точность не сильно улучшилась.

Мы также попробовали XGBoosting на RF, но это снизило точность до 70%. Это снизило точность и даже в значительной степени уменьшило Точность и отзыв.

3.7 Классификаторы XGB

XGBoost улучшает базовую структуру метода повышения градиента за счет системной оптимизации и алгоритмических улучшений. Это самая известная библиотека в сообществе машинного обучения [подробнее читайте здесь].

Эта модель превзошла все повышающие классификаторы с точностью около 90% для всех жанров. Некоторые отмеченные наблюдения:

  • Меньшая корреляция с переменными
  • Каждый жанр всегда классифицировался с точностью 85+%.
  • Такие жанры, как классика, хип-хоп, имели даже 100% точность.

3,8 МЛП

Эта модель представляет собой искусственную нейронную сеть с многочисленными слоями и множеством активационных нейронов в каждом слое. Для ручной настройки гиперпараметров использовались следующие показатели: функция активации, количество нейронов, количество скрытых слоев, скорость обучения, регуляризация и декомпозиция и так далее. Функция Softmax выходного слоя оставалась фиксированной.

Производительность была изменена с помощью ручной настройки гиперпараметров с использованием следующих показателей:

  • Скорость обучения
  • Эпохи
  • Количество скрытых слоев
  • Нейроны на скрытый слой
  • Функция активации

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

До

  • Точность обучения: 0,69914
  • Точность тестирования: 0,4900

После

  • Точность обучения: 0,77200001
  • Точность тестирования: 0,606666

Переоснащение и неправильная работа MLP были вызваны высоким значением no. переменных и деталей в данных.

3.9 SVM (линейный и полиномиальный)

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

Машина опорных векторов занимается только поиском границы решения. Гиперплоскость (которая в двух измерениях по сути является линией), которая оптимально разделяет теги, создается методом опорных векторов с использованием точек данных. Эта линия служит границей принятия решения: все, что попадает в одну сторону, будет классифицировано как одна группа, а все, что попадет в другую, будет классифицировано как другая группа. Для нелинейных данных он ловко отображает более высокие измерения. Он использует функцию ядра для более быстрого вычисления этих преобразований, которые мы можем настроить в соответствии с нашими требованиями.

Для этого проекта настройка HP на этой модели выполнялась вручную. SVM превзошла все модели, которые мы использовали, и показала наилучшую точность 0,9424%. Ядро является наиболее важным параметром, так как оно определяет, как будут проецироваться входные переменные. Линейное, полиномиальное и RBF-ядро сравнивались с использованием матрицы путаницы. Настройка гиперпараметров выполнялась вручную путем изменения следующих показателей:

  • ядра = [‘линейный’, ‘поли’, ‘rbf’]
  • Степень = от 1 до 7
  • C = 10 to 1000
  • Гамма = от 0,01 до 10

Лучшее линейное ядро ​​имеет точность 70%, а лучшее полиномиальное ядро ​​дает точность 88%. Наконец, ядро ​​RBF превзошло все остальные модели с показателем 94%, в то время как каждый жанр был классифицирован почти на 90%.

4. Выводы

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

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

Точность была выше, чем у всех классификаторов KNN, DT и ансамблей. В то время как в случае LR, SGD, NB, MLP, SVM отзыв наблюдался больше, чем Precision.

Наиболее успешным классификатором является SVM с ядром RBF. Gaussian превзошел полиномиальное ядро ​​почти на всех итерациях. При устранении существенных ошибок в жанровой категоризации методы ансамбля, такие как ADAboost, Gradient Boost, превзошли полиномиальный классификатор SVM.

Мы всегда ищем улучшения в нашем коде. Не стесняйтесь отправлять вопрос или запрос на вытягивание [здесь]