Вдохновение

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

Цели

  • Какие особенности песни мне нравятся больше / меньше всего?
  • Как музыка, которую я люблю, по сравнению с музыкой, которая мне не нравится?
  • Создайте прогнозирующую модель того, нравится мне песня или нет.

Набор данных

Я сравниваю 2 своих плейлиста из Spotify:

  • Понравившийся плейлист (630 песен)
  • Нелюбимый плейлист (537 песен)

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

1. BPM - ударов в минуту. Темп песни.

2. Энергия - энергия песни - чем выше значение, тем более энергична песня.

3. Танец. Чем выше значение, тем легче танцевать под эту песню.

4. Громко - чем выше значение, тем громче песня.

5. Валентность - чем выше значение, тем более позитивное настроение у песни.

6. Акустический. Чем выше значение, тем акустичнее песня.

7. Популярность. Чем выше значение, тем популярнее песня.

8. Год - год выпуска песни.

9. Продолжительность - продолжительность песни в секундах.

Исследовательский анализ данных (EDA)

Опять же, используя Python, я смог создать эту визуализацию распределения между моими понравившимися (синий) и не понравившимися (красный) песнями.

Глядя на распределение каждой функции, есть четкие различия между моими понравившимися и не понравившимися песнями, особенно в ENERGY, DANCE, LOUD и АКУСТИЧЕСКИЕ функции.

  • ЭНЕРГИЯ: я предпочитаю песни с нормальным распределением энергии и не люблю песни с более высокой энергией.
  • ТАНЕЦ: я предпочитаю танцевальные песни, а не
  • ГРОМКО: мне не нравятся слишком громкие песни.
  • АКУСТИЧЕСКИЕ: мне не нравятся песни, в которых нет акустики.

Прогнозирующая модель

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

Я использую контролируемое обучение, алгоритмы классификации, чтобы предсказать, нравится мне песня или нет. Я использую 3 модели: k-ближайшего соседа, логистическая регрессия и случайный лес.

Запуск моделей

После балансировки данных и разделения их на наборы для обучения и тестирования, я запускаю 3 модели на данных. Я решил использовать следующие метрики для оценки качества каждой модели: ROC AUC, Точность, Точность, Отзыв.

Ниже приведены результаты с использованием параметров по умолчанию для каждого классификатора:

Если посмотреть на показатели и кривые ROC, явным победителем является классификатор случайного леса. С показателем ROC AUC 91,94% и показателем точности 83,87% модель показала неплохие результаты на тестовом наборе с использованием только параметров по умолчанию.

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

Настройка лучшей модели - случайный лес

В Классификаторе случайного леса доступен ряд параметров. Но я буду настраивать только следующие параметры со следующими диапазонами и значениями:

n_estimators: np.arange(10,200,10)
min_samples_leaf: np.arange(1,100,10)
max_features: ['auto','sqrt','log2']

После использования Scikit-Learn's GridSearchCV() для настройки параметров оптимизированные параметры будут следующими:

n_estimators: 80
min_samples_leaf: 1
max_features: 'sqrt'

После использования новых оптимизированных параметров я сравниваю результаты модели с использованием параметров по умолчанию и модели с использованием оптимизированных параметров:

Есть определенное улучшение при использовании оптимизированных параметров, особенно в Recall, с улучшением на 2,42%.

Заключение

Целью этого проекта было выяснить, какие особенности песни мне нравятся / не нравятся, и предсказать, нравится ли мне песня или нет. Эти цели были достигнуты благодаря исследовательскому анализу данных и машинному обучению.

Проведя предварительный анализ данных, я обнаружил, что мне нравятся песни с низким уровнем ЭНЕРГИИ, низким уровнем ВАЛЕНЦИИ (менее позитивные песни) и более АКУСТИЧЕСКИМ , и мне не нравятся песни с более высоким BPM, менее ТАНЦАРНЫЕ, ГРОМКО и менее ПОПУЛЯРНЫЕ .

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