🎵 Acoustic Hit Predictor v1.0
Модель машинного обучения для прогнозирования популярности музыкальных треков на основе акустических характеристик из Spotify API.
📊 Описание модели
Random Forest Regressor обученная на 114,000 треков для предсказания популярности (0-100).
Параметры модели:
n_estimators: 50max_depth: 30min_samples_split: 5min_samples_leaf: 2max_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 факторов популярности:
- Danceability — главный драйвер (среднее: 0.68)
- Energy — умеренное влияние (среднее: 0.58)
- Valence — позитивность (среднее: 0.47)
- Loudness — технический фактор
- Tempo — оптимально 110-130 BPM
💪 Сильные стороны
- ✅ Стабильная работа на средних значениях популярности (40-65)
- ✅ Хорошая генерализация (MAE 10.74 vs 11.44)
- ✅ Правильное понимание роли танцевальности
- ✅ Быстрая batch-обработка
⚠️ Слабые стороны
- Консервативность (редко предсказывает > 65)
- Проблемы с мега-хитами (popularity > 80)
- Систематическая недооценка в 70% случаев
- Не учитывает временной и культурный контекст
📥 Использование
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
- Детальный анализ: См.
reports/model_analysis.mdв репозитории - Техническая спецификация: См.
TECHNICAL_SPECIFICATION.md
📄 Лицензия
MIT License
👨💻 Автор
mmobik
- GitHub: @mmobik
📅 Версия
- Дата обучения: Декабрь 2024
- Версия: 1.0
- Статус: MVP (Minimum Viable Product)
🔄 Планируемые улучшения
- Добавление большего количества треков с popularity > 80
- Калибровка предсказаний для крайних значений
- Временные признаки (год релиза, сезонность)
- Метаданные (жанр, лейбл, популярность артиста)
- Downloads last month
- -