| | --- |
| | language: en |
| | license: mit |
| | tags: |
| | - music |
| | - audio-features |
| | - popularity-prediction |
| | - random-forest |
| | - regression |
| | - spotify |
| | library_name: sklearn |
| | pipeline_tag: tabular-regression |
| | --- |
| | |
| | # 🎵 Acoustic Hit Predictor v1.0 |
| |
|
| | Модель машинного обучения для прогнозирования популярности музыкальных треков на основе акустических характеристик из Spotify API. |
| |
|
| | ## 📊 Описание модели |
| |
|
| | **Random Forest Regressor** обученная на 114,000 треков для предсказания популярности (0-100). |
| |
|
| | ### Параметры модели: |
| | - `n_estimators`: 50 |
| | - `max_depth`: 30 |
| | - `min_samples_split`: 5 |
| | - `min_samples_leaf`: 2 |
| | - `max_features`: 'sqrt' |
| |
|
| | ## 📈 Метрики качества |
| |
|
| | | Метрика | Train | Test | Оценка | |
| | |---------|-------|------|--------| |
| | | MAE | 6.40 | 11.44 | ✅ Хорошо | |
| | | R² | - | 0.52 | ⚠️ Средне | |
| | | Стабильность CV | 0.98% | - | ✅ Отлично | |
| |
|
| | **Погрешность:** ±11 пунктов популярности в среднем |
| |
|
| | ## 🎯 Основные характеристики |
| |
|
| | - ⚡ **Быстрый инференс:** ~1ms на трек |
| | - 📊 **Признаков:** 30 (оригинальные + производные) |
| | - ⏱️ **Время обучения:** 67.3 минуты |
| | - 💾 **Размер:** 231 MB |
| |
|
| | ## 🔍 Feature Importance |
| |
|
| | ### Топ-5 факторов популярности: |
| | 1. **Danceability** — главный драйвер (среднее: 0.68) |
| | 2. **Energy** — умеренное влияние (среднее: 0.58) |
| | 3. **Valence** — позитивность (среднее: 0.47) |
| | 4. **Loudness** — технический фактор |
| | 5. **Tempo** — оптимально 110-130 BPM |
| |
|
| | ## 💪 Сильные стороны |
| |
|
| | - ✅ Стабильная работа на средних значениях популярности (40-65) |
| | - ✅ Хорошая генерализация (MAE 10.74 vs 11.44) |
| | - ✅ Правильное понимание роли танцевальности |
| | - ✅ Быстрая batch-обработка |
| |
|
| | ## ⚠️ Слабые стороны |
| |
|
| | - Консервативность (редко предсказывает > 65) |
| | - Проблемы с мега-хитами (popularity > 80) |
| | - Систематическая недооценка в 70% случаев |
| | - Не учитывает временной и культурный контекст |
| |
|
| | ## 📥 Использование |
| |
|
| | ```python |
| | import pickle |
| | import pandas as pd |
| | |
| | # Загрузка модели |
| | with open('final_random_forest_model.pkl', 'rb') as f: |
| | model = pickle.load(f) |
| | |
| | # Подготовка данных (пример) |
| | features = pd.DataFrame({ |
| | 'danceability': [0.7], |
| | 'energy': [0.8], |
| | 'loudness': [-5.0], |
| | 'speechiness': [0.05], |
| | 'acousticness': [0.1], |
| | 'instrumentalness': [0.0], |
| | 'liveness': [0.1], |
| | 'valence': [0.6], |
| | 'tempo': [120.0], |
| | 'duration_ms': [200000], |
| | 'key': [5], |
| | 'mode': [1], |
| | 'time_signature': [4] |
| | # + производные признаки (см. feature engineering) |
| | }) |
| | |
| | # Предсказание |
| | popularity = model.predict(features) |
| | print(f"Предсказанная популярность: {popularity[0]:.1f}/100") |
| | ``` |
| |
|
| | ## 🎯 Интерпретация результатов |
| |
|
| | ``` |
| | Предсказанная популярность: |
| | 0-30 → ❌ Слабый потенциал |
| | 30-50 → ⚠️ Средний потенциал |
| | 50-70 → ✅ Хороший потенциал |
| | 70+ → 🎯 Высокий потенциал (модель редко так предсказывает) |
| | ``` |
| |
|
| | ## ✅ Подходит для: |
| | - **Независимых артистов** — первичная оценка потенциала трека |
| | - **Продюсеров** — сравнение разных версий композиции |
| | - **A&R менеджеров** — скрининг демо-материалов |
| | - **Исследователей** — анализ факторов популярности |
| |
|
| | ## 🚫 Ограничения: |
| | - Не предсказывает мега-хиты (80+) |
| | - Не учитывает маркетинг и промо |
| | - Не заменяет экспертное мнение |
| | - Работает только на аудио-характеристиках |
| |
|
| | ## 📚 Дополнительные ресурсы |
| |
|
| | - **GitHub репозиторий:** [Acoustic-Hit-Predictor](https://github.com/mmobik/Acoustic-Hit-Predictor-From-Audio-Features-to-Chart-Success) |
| | - **Детальный анализ:** См. `reports/model_analysis.md` в репозитории |
| | - **Техническая спецификация:** См. `TECHNICAL_SPECIFICATION.md` |
| |
|
| | ## 📄 Лицензия |
| |
|
| | MIT License |
| |
|
| | ## 👨💻 Автор |
| |
|
| | **mmobik** |
| | - GitHub: [@mmobik](https://github.com/mmobik) |
| |
|
| | ## 📅 Версия |
| |
|
| | - **Дата обучения:** Декабрь 2024 |
| | - **Версия:** 1.0 |
| | - **Статус:** MVP (Minimum Viable Product) |
| |
|
| | ## 🔄 Планируемые улучшения |
| |
|
| | 1. Добавление большего количества треков с popularity > 80 |
| | 2. Калибровка предсказаний для крайних значений |
| | 3. Временные признаки (год релиза, сезонность) |
| | 4. Метаданные (жанр, лейбл, популярность артиста) |
| |
|