Проект, в котором я попробовал построить прогноз недельных продаж для магазинов Walmart. Задача — пройти весь процесс: от первичной очистки и EDA до обучения нескольких моделей и сравнения качества.
Этот проект — завершённый пример предсказания недельных продаж сети Walmart. Он демонстрирует полный цикл работы аналитика:
- исследование данных (EDA),
- создание признаков для временных рядов,
- обучение нескольких моделей,
- сравнение точности,
- визуализация прогнозов,
- формирование бизнес-выводов.
В датасете содержатся недельные продажи по магазинам Walmart и дополнительные признаки:
- Weekly_Sales — недельные продажи,
- Store — идентификатор магазина,
- Date — дата недели,
- Holiday_Flag — праздничная неделя или нет,
- Temperature — температура,
- Fuel_Price — цена топлива,
- CPI — индекс потребительских цен,
- Unemployment — уровень безработицы.
Цель: спрогнозировать продажи и сравнить разные подходы к моделированию.
-
Python — основной язык
-
Работа с данными:
pandas,numpy -
Визуализация:
matplotlib,seaborn -
Временные ряды:
statsmodels(ARIMA),prophet -
ML-модели:
RandomForestRegressorGradientBoostingRegressor
walmart-forecast/
├─ data/
│ └─ Walmart_Sales.csv # исходный датасет
├─ notebooks/
│ ├─ problem_and_eda.ipynb # постановка задачи + EDA
│ ├─ feature_engineering_and_models.ipynb # признаки + обучение моделей
│ └─ evaluation_and_insights.ipynb # оценка моделей + выводы
└─ README.md
- Seasonal Naive — базовый ориентир (повтор продаж год назад)
- ARIMA (1 магазин) — классическая модель временных рядов
- Prophet (1 магазин) — модель тренда и сезонности
- Random Forest — глобальная модель по всем магазинам
- Gradient Boosting — модель, использующая лаги, календарь и макрофакторы
| Модель | MAPE | WAPE |
|---|---|---|
| Seasonal Naive | ~0.053 | ~0.051 |
| ARIMA (1 магазин) | ~0.060 | ~0.059 |
| Prophet (1 магазин) | ~0.104 | ~0.102 |
| Random Forest | ~0.045 | ~0.045 |
| Gradient Boosting | ~0.042 | ~0.040 |
Gradient Boosting — лучшая модель в проекте. Она наиболее устойчива и точна при прогнозе продаж по всей сети магазинов.
- У продаж ярко выраженная годовая сезонность.
- Праздничные недели ведут себя иначе — их лучше прогнозировать отдельно.
- Магазины сильно различаются по уровню и динамике продаж.
- Макроэкономические признаки влияют слабо, но дают небольшое улучшение.
- Глобальные ML-модели работают лучше, чем отдельные модели для каждого магазина.
- Лучшая модель — Gradient Boosting, она использует лаги, календарь и макрофакторы.
- Кросс-валидация по временным окнам
- Подбор гиперпараметров моделей
- Кластеризация магазинов по поведению спроса
- Построение ансамбля моделей