После представления исследований кластеризации и визуализации набора данных изображения собаки/кошки стоит рассмотреть задачи для набора аудиоданных собаки/кошки. В этом посте рассматриваются некоторые проблемы дизайна для разработки и оценки подходов машинного обучения для классификации аудио в Audio Cats and Dogs in Kaggle. Поскольку это небольшой и несбалансированный набор аудиоданных (164 wav-файла о кошках, 113 wav-файлов о собаках, длительность от 0,9 до 17,9 секунд), в этой статье основное внимание будет уделено трем основным проблемам, то есть извлечению признаков. strong>, дополнение данных и выбор модели в классификации звука. Мы также сравним и сопоставим производительность четырех моделей машинного обучения (Наивный байесовский алгоритм, Случайный лес, Повышение градиента и XGBoost) при различных методах дополнения данных. Давайте посмотрим на процессы и результаты для этой задачи.

1. Извлечение признаков

Извлечение признаков для аудио или музыки — очень сложный вопрос. В этом исследовании мы сосредоточимся на наиболее распространенном методе Mel Frequency Cepstral Coefficient (MFCC), реализованном в Librosa. Код для извлечения и обработки MFCC из wav-файла показан на рисунке 2.

В дополнение к использованию MFCC в числовой форме в качестве представления признаков, мы также можем рассматривать MFCC в графической форме (или Mel-Frequency Spectrogram) в качестве представления признаков. Первый случай обычно обрабатывается алгоритмами машинного обучения, а второй — моделями глубокого обучения, такими как сверточные нейронные сети. Этот пост будет посвящен представлению признаков в числовой форме и выбору модели с помощью алгоритмов машинного обучения.

2. Увеличение данных

Поскольку Audio Cats and Dogs in Kaggle — это небольшой и несбалансированный набор данных, при предварительной обработке данных возникает два вопроса:

(1) Нужно ли уравновешивать выборки в классе большинства и классе меньшинства? Мы проверим идею избыточной выборки с использованием Техники синтетической избыточной выборки меньшинства (SMOTE) в несбалансированном обучении, как показано на рисунке 3.

(2) Можем ли мы увеличить количество выборок во всем наборе данных, например, путем добавления шума, смещения времени, изменения высоты тона и т. д. Мы проверим идею увеличения громкости, используя nlpaug как показано на рисунке 4.

Влияние интеграции вышеуказанных механизмов будет показано позже.

3. Выбор модели

Для экспериментов используются четыре алгоритма машинного обучения: Наивный Байес, Случайный лес, Повышение градиента и XGBoost, как показано на рис. 5. Пакет scikit-learn предоставляет первые три модели. Все модели используются как есть, без настройки гиперпараметров или поиска.

4. Оценка производительности

На рис. 6 представлены результаты производительности для четырех алгоритмов машинного обучения с различными методами увеличения данных.

  • Столбец 1 использует необработанные данные, всего ~ 277 файлов, 164 для кошек, 113 для собак; 80% на обучение, 20% на тестирование.
  • Столбец 2 использует SMOTE для балансировки класса большинства и класса меньшинства, но без nlpaug для увеличения данных всего ~ 328 файлов, 164 для кошек, 164 для собак; 80% на обучение, 20% на тестирование.
  • Столбец 3 использует nlpaug для увеличения громкости и удваивания всего набора данных, затем использует SMOTE для балансировки основного класса и класса меньшинства. Всего ~ 656 файлов, 328 файлов для кошек, 328 файлов для собак; 80% на обучение, 20% на тестирование.

Лучший результат — 97,3% в F1 Score при Gradient Boosting и XGBoost с двумя методами увеличения данных вместе.

5. Выводы

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

  • MFCC в числовой форме является хорошим представлением характеристик аудио. Потенциальное улучшение извлечения признаков может заключаться в добавлении дополнительных числовых признаков или рассмотрении графического представления признаков и подходов к глубокому обучению.
  • Расширение данных, при котором уравновешиваются классы и улучшается набор данных, может повысить общую производительность. Также обратите внимание, что балансировка классов применяется на уровне функций, а улучшение набора данных применяется на уровне звука. Дальнейшим улучшением увеличения данных может быть добавление шума или изменение времени звука.
  • XGBoost — это хорошая модель машинного обучения, которая хорошо работает при трех разных настройках данных. Random Forest и Gradient Boosting тоже могут дать неплохие результаты, иногда даже не в лучшем случае. MultiLayer Perceptron под Keras/Tensorflow (не показан в этом посте) не работает для этой задачи, вероятно, из-за размера данных, представления функций или настройки гиперпараметров.

И еще один вопрос: будет ли работать весь подход в большом наборе данных?

Спасибо за чтение. Если у вас есть какие-либо комментарии, пожалуйста, не стесняйтесь оставлять заметки.

Исправления. Применение расширения данных в нужном месте конвейера очень важно. Правильный конвейер: (1) разделение всего набора данных на набор данных для обучения и набор данных для тестирования, (2) применение дополнения данных только к набору данных для обучения, затем обучение модели с использованием набора данных для обучения и (3) оценка модели с использованием тестирования набор данных. Неправильный конвейер, например применение расширения данных ко всему набору данных, а затем разделение его на набор данных для обучения и набор данных для тестирования, может привести к утечке информации и неверным результатам.