Upload folder using huggingface_hub
Browse files- README.md +151 -0
- final_random_forest_model.pkl +3 -0
README.md
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
language: en
|
| 3 |
+
license: mit
|
| 4 |
+
tags:
|
| 5 |
+
- music
|
| 6 |
+
- audio-features
|
| 7 |
+
- popularity-prediction
|
| 8 |
+
- random-forest
|
| 9 |
+
- regression
|
| 10 |
+
- spotify
|
| 11 |
+
library_name: sklearn
|
| 12 |
+
pipeline_tag: tabular-regression
|
| 13 |
+
---
|
| 14 |
+
|
| 15 |
+
# 🎵 Acoustic Hit Predictor v1.0
|
| 16 |
+
|
| 17 |
+
Модель машинного обучения для прогнозирования популярности музыкальных треков на основе акустических характеристик из Spotify API.
|
| 18 |
+
|
| 19 |
+
## 📊 Описание модели
|
| 20 |
+
|
| 21 |
+
**Random Forest Regressor** обученная на 114,000 треков для предсказания популярности (0-100).
|
| 22 |
+
|
| 23 |
+
### Параметры модели:
|
| 24 |
+
- `n_estimators`: 50
|
| 25 |
+
- `max_depth`: 30
|
| 26 |
+
- `min_samples_split`: 5
|
| 27 |
+
- `min_samples_leaf`: 2
|
| 28 |
+
- `max_features`: 'sqrt'
|
| 29 |
+
|
| 30 |
+
## 📈 Метрики качества
|
| 31 |
+
|
| 32 |
+
| Метрика | Train | Test | Оценка |
|
| 33 |
+
|---------|-------|------|--------|
|
| 34 |
+
| MAE | 6.40 | 11.44 | ✅ Хорошо |
|
| 35 |
+
| R² | - | 0.52 | ⚠️ Средне |
|
| 36 |
+
| Стабильность CV | 0.98% | - | ✅ Отлично |
|
| 37 |
+
|
| 38 |
+
**Погрешность:** ±11 пунктов популярности в среднем
|
| 39 |
+
|
| 40 |
+
## 🎯 Основные характеристики
|
| 41 |
+
|
| 42 |
+
- ⚡ **Быстрый инференс:** ~1ms на трек
|
| 43 |
+
- 📊 **Признаков:** 30 (оригинальные + производные)
|
| 44 |
+
- ⏱️ **Время обучения:** 67.3 минуты
|
| 45 |
+
- 💾 **Размер:** 231 MB
|
| 46 |
+
|
| 47 |
+
## 🔍 Feature Importance
|
| 48 |
+
|
| 49 |
+
### Топ-5 факторов популярности:
|
| 50 |
+
1. **Danceability** — главный драйвер (среднее: 0.68)
|
| 51 |
+
2. **Energy** — умеренное влияние (среднее: 0.58)
|
| 52 |
+
3. **Valence** — позитивность (среднее: 0.47)
|
| 53 |
+
4. **Loudness** — технический фактор
|
| 54 |
+
5. **Tempo** — оптимально 110-130 BPM
|
| 55 |
+
|
| 56 |
+
## 💪 Сильные стороны
|
| 57 |
+
|
| 58 |
+
- ✅ Стабильная работа на средних значениях популярности (40-65)
|
| 59 |
+
- ✅ Хорошая генерализация (MAE 10.74 vs 11.44)
|
| 60 |
+
- ✅ Правильное понимание роли танцевальности
|
| 61 |
+
- ✅ Быстрая batch-обработка
|
| 62 |
+
|
| 63 |
+
## ⚠️ Слабые стороны
|
| 64 |
+
|
| 65 |
+
- Консервативность (редко предсказывает > 65)
|
| 66 |
+
- Проблемы с мега-хитами (popularity > 80)
|
| 67 |
+
- Систематическая недооценка в 70% случаев
|
| 68 |
+
- Не учитывает временной и культурный контекст
|
| 69 |
+
|
| 70 |
+
## 📥 Использование
|
| 71 |
+
|
| 72 |
+
```python
|
| 73 |
+
import pickle
|
| 74 |
+
import pandas as pd
|
| 75 |
+
|
| 76 |
+
# Загрузка модели
|
| 77 |
+
with open('final_random_forest_model.pkl', 'rb') as f:
|
| 78 |
+
model = pickle.load(f)
|
| 79 |
+
|
| 80 |
+
# Подготовка данных (пример)
|
| 81 |
+
features = pd.DataFrame({
|
| 82 |
+
'danceability': [0.7],
|
| 83 |
+
'energy': [0.8],
|
| 84 |
+
'loudness': [-5.0],
|
| 85 |
+
'speechiness': [0.05],
|
| 86 |
+
'acousticness': [0.1],
|
| 87 |
+
'instrumentalness': [0.0],
|
| 88 |
+
'liveness': [0.1],
|
| 89 |
+
'valence': [0.6],
|
| 90 |
+
'tempo': [120.0],
|
| 91 |
+
'duration_ms': [200000],
|
| 92 |
+
'key': [5],
|
| 93 |
+
'mode': [1],
|
| 94 |
+
'time_signature': [4]
|
| 95 |
+
# + производные признаки (см. feature engineering)
|
| 96 |
+
})
|
| 97 |
+
|
| 98 |
+
# Предсказание
|
| 99 |
+
popularity = model.predict(features)
|
| 100 |
+
print(f"Предсказанная популярность: {popularity[0]:.1f}/100")
|
| 101 |
+
```
|
| 102 |
+
|
| 103 |
+
## 🎯 Интерпретация результатов
|
| 104 |
+
|
| 105 |
+
```
|
| 106 |
+
Предсказанная популярность:
|
| 107 |
+
0-30 → ❌ Слабый потенциал
|
| 108 |
+
30-50 → ⚠️ Средний потенциал
|
| 109 |
+
50-70 → ✅ Хороший потенциал
|
| 110 |
+
70+ → 🎯 Высокий потенциал (модель редко так предсказывает)
|
| 111 |
+
```
|
| 112 |
+
|
| 113 |
+
## ✅ Подходит для:
|
| 114 |
+
- **Независимых артистов** — первичная оценка потенциала трека
|
| 115 |
+
- **Продюсеров** — сравнение разных версий композиции
|
| 116 |
+
- **A&R менеджеров** — скрининг демо-материалов
|
| 117 |
+
- **Исследователей** — анализ факторов популярности
|
| 118 |
+
|
| 119 |
+
## 🚫 Ограничения:
|
| 120 |
+
- Не предсказывает мега-хиты (80+)
|
| 121 |
+
- Не учитывает маркетинг и промо
|
| 122 |
+
- Не заменяет экспертное мнение
|
| 123 |
+
- Работает только на аудио-характеристиках
|
| 124 |
+
|
| 125 |
+
## 📚 Дополнительные ресурсы
|
| 126 |
+
|
| 127 |
+
- **GitHub репозиторий:** [Acoustic-Hit-Predictor](https://github.com/mmobik/Acoustic-Hit-Predictor-From-Audio-Features-to-Chart-Success)
|
| 128 |
+
- **Детальный анализ:** См. `reports/model_analysis.md` в репозитории
|
| 129 |
+
- **Техническая спецификация:** См. `TECHNICAL_SPECIFICATION.md`
|
| 130 |
+
|
| 131 |
+
## 📄 Лицензия
|
| 132 |
+
|
| 133 |
+
MIT License
|
| 134 |
+
|
| 135 |
+
## 👨💻 Автор
|
| 136 |
+
|
| 137 |
+
**mmobik**
|
| 138 |
+
- GitHub: [@mmobik](https://github.com/mmobik)
|
| 139 |
+
|
| 140 |
+
## 📅 Версия
|
| 141 |
+
|
| 142 |
+
- **Дата обучения:** Декабрь 2024
|
| 143 |
+
- **Версия:** 1.0
|
| 144 |
+
- **Статус:** MVP (Minimum Viable Product)
|
| 145 |
+
|
| 146 |
+
## 🔄 Планируемые улучшения
|
| 147 |
+
|
| 148 |
+
1. Добавление большего количества треков с popularity > 80
|
| 149 |
+
2. Калибровка предсказаний для крайних значений
|
| 150 |
+
3. Временные признаки (год релиза, сезонность)
|
| 151 |
+
4. Метаданные (жанр, лейбл, популярность артиста)
|
final_random_forest_model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0b37f50b223c82612e45147ce4a8aad896545cb8930a53114bf3425f3e0017e1
|
| 3 |
+
size 242313937
|