Вдохновение
Если есть одна вещь, без которой я не могу жить, так это не мой телефон, ноутбук или машина - это музыка. Я люблю музыку и теряюсь в ней. Мое вдохновение для этого проекта - узнать, что есть в песне, которая мне так нравится.
Цели
- Какие особенности песни мне нравятся больше / меньше всего?
- Как музыка, которую я люблю, по сравнению с музыкой, которая мне не нравится?
- Создайте прогнозирующую модель того, нравится мне песня или нет.
Набор данных
Я сравниваю 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 с гипертонастроенными параметрами. В целом, я доволен результатами и считаю, что эта модель может быть полезна для прогнозирования того, понравится ли вам песня.