Прогнозирование спроса для ритейла: как сократить запасы на 30% без потери продаж
Почему традиционные методы не работают
Большинство компаний все еще планируют закупки «на глаз» или простыми эвристиками:
- «Закажем столько же, сколько продали в прошлом месяце»
- «Добавим 20% на всякий случай»
- «Давайте посмотрим, что было год назад»
Результат: либо затоваривание склада, либо дефициты и потеря продаж.
Реальная статистика по рынку
- 40-50% компаний в России используют Excel для планирования закупок
- 35% запасов — это неликвид, который уже не продастся
- 15-25% потеря продаж из-за out-of-stock ситуаций
- 8-12 млн ₽ замороженных средств на складе у среднего магазина
Что дает ML-прогнозирование
Machine Learning анализирует сотни факторов одновременно:
- Исторические продажи (тренд + сезонность)
- Календарные эффекты (праздники, выходные)
- Промо-акции и скидки
- Цены конкурентов
- Погода (для сезонных товаров)
- Макроэкономические показатели
Кейс: розничная сеть продуктов (15 магазинов)
Исходная ситуация:
- Ассортимент: 8 000 SKU
- Заморожено в запасах: 12 млн ₽
- Потери от дефицита: ~600 тыс. ₽/месяц
- Списания просрочки: 2.5% от оборота
Что внедрили:
-
Сбор и очистка данных (2 года истории)
- Продажи по чекам
- Остатки на складах
- Календарь акций
- Цены конкурентов (парсинг сайтов)
-
Feature Engineering
features = [ 'day_of_week', 'is_weekend', 'is_holiday', 'days_to_holiday', 'week_of_year', 'promo_flag', 'discount_percent', 'competitor_price_ratio', 'stock_level', 'days_since_last_delivery', 'weather_temp', 'weather_precipitation' ] -
Ансамбль моделей
- Prophet (Facebook) — для тренда и сезонности
- LightGBM — для учета промо и внешних факторов
- LSTM (deep learning) — для сложных товаров с нелинейной динамикой
- Итоговый прогноз = взвешенное среднее
-
Интеграция с ERP
- Автоматическая генерация заказов поставщикам
- Оптимизация точки заказа (Reorder Point)
- Расчет страхового запаса (Safety Stock)
Результаты за 6 месяцев
| Метрика | До | После | Изменение |
|---|---|---|---|
| Замороженные средства | 12 млн ₽ | 8.2 млн ₽ | -32% |
| Потери от дефицита | 600 тыс. ₽ | 180 тыс. ₽ | -70% |
| Просрочка/списания | 2.5% | 0.8% | -68% |
| Точность прогноза (WAPE) | — | 87% | — |
| Время на планирование | 25 ч/нед | 3 ч/нед | -88% |
ROI проекта: 380% за первый год
Экономический эффект
- Высвобождено ≈4 млн ₽ из запасов → реинвестированы в маркетинг
- +420 тыс. ₽ дополнительной прибыли от снижения дефицита
- -200 тыс. ₽ списаний в год
- Окупаемость: 4.5 месяца
Технические детали
Архитектура системы
┌─────────────┐
│ Источники │
│ данных │
└──────┬──────┘
│
┌──────▼──────────────────────────┐
│ ETL Pipeline (Airflow) │
│ - 1С (продажи, остатки) │
│ - Календарь акций │
│ - Конкуренты (web scraping) │
│ - Погода API │
└──────┬──────────────────────────┘
│
┌──────▼──────────────────────────┐
│ Feature Store (PostgreSQL) │
└──────┬──────────────────────────┘
│
┌──────▼──────────────────────────┐
│ ML Pipeline │
│ - Prophet (базовый прогноз) │
│ - LightGBM (промо, внешние) │
│ - Ensemble (финальный прогноз) │
└──────┬──────────────────────────┘
│
┌──────▼──────────────────────────┐
│ Inventory Optimization │
│ - Reorder Point │
│ - Safety Stock │
│ - Order Quantity (EOQ) │
└──────┬──────────────────────────┘
│
┌──────▼──────────────────────────┐
│ Интерфейсы │
│ - Дашборд для закупщиков │
│ - API для ERP │
│ - Alerts в Telegram │
└─────────────────────────────────┘
Модель LightGBM для промо
import lightgbm as lgb
# Гиперпараметры после tuning
params = {
'objective': 'tweedie', # для продаж лучше tweedie
'metric': 'rmse',
'boosting_type': 'gbdt',
'num_leaves': 63,
'learning_rate': 0.05,
'feature_fraction': 0.8,
'bagging_fraction': 0.8,
'bagging_freq': 5,
'verbose': -1
}
model = lgb.train(
params,
train_data,
num_boost_round=1000,
valid_sets=[valid_data],
callbacks=[
lgb.early_stopping(50),
lgb.log_evaluation(100)
]
)
Как оценить качество прогноза
Основные метрики
WAPE (Weighted Absolute Percentage Error)
WAPE = (Σ |Факт - Прогноз|) / (Σ Факт) × 100%
- < 10% — отлично
- 10-20% — хорошо
- 20-30% — приемлемо
- > 30% — требуется улучшение
MAE (Mean Absolute Error)
MAE = Σ |Факт - Прогноз| / N
Показывает среднюю абсолютную ошибку в единицах товара.
Bias (систематическая ошибка)
Bias = Σ (Прогноз - Факт) / Σ Факт
- Bias > 0 → переоценка спроса (лишние запасы)
- Bias < 0 → недооценка спроса (дефициты)
Кейс 2: B2B дистрибьютор электроники
Особенности:
- 35 000 SKU (длинный хвост)
- Средний срок жизни продукта: 6-9 месяцев
- Высокая волатильность спроса
Подход:
-
Сегментация товаров по ABC-XYZ
- A-товары (топ 20%) → индивидуальные модели
- B/C-товары → групповые модели
- Новинки → transfer learning от похожих товаров
-
Hierarchical forecasting
- Прогноз на уровне категории (точнее)
- Распределение внутри категории по долям
-
Учет жизненного цикла товара
- Фаза роста → коэффициент > 1
- Фаза зрелости → стабильный прогноз
- Фаза спада → экспоненциальное снижение
Результаты:
- Оборачиваемость запасов: 45 дней → 28 дней
- Сокращение списаний устаревших товаров: -55%
- Fill rate (доступность): 82% → 94%
Что важно для успешного внедрения
1. Качество данных (критично!)
- Минимум 12-18 месяцев истории
- Чистые данные (без дыр, аномалий)
- Привязка всех событий к датам (промо, дефициты)
2. Правильная валидация
- Time-series split (не случайная выборка!)
- Backtesting на исторических данных
- Walk-forward validation
3. Постоянное обновление
- Переобучение моделей каждые 1-4 недели
- Мониторинг quality drift
- A/B тесты новых фич
4. Интеграция с бизнес-процессами
Модель должна быть встроена в систему закупок:
- Автогенерация заказов
- Alerts при аномалиях
- Dashboard для закупщиков
Частые ошибки
❌ «Одна модель на все товары» Разные категории требуют разных подходов.
❌ Игнорирование внешних факторов Промо, праздники, погода могут давать +50% к базовому спросу.
❌ Нет мониторинга Модель деградирует со временем, нужен контроль качества.
❌ Не учитываем бизнес-ограничения MOQ (минимальный заказ), кратность, сроки поставки.
Следующие шаги
Если хотите внедрить прогнозирование спроса:
-
Проверьте данные
- Есть ли 12+ месяцев истории продаж?
- Фиксируете ли промо и out-of-stock?
-
Начните с пилота
- Выберите 50-100 топовых SKU
- Постройте baseline модель (Prophet)
- Сравните с текущим планированием
-
Масштабируйте
- Добавьте внешние факторы
- Оптимизируйте ансамбль моделей
- Интегрируйте с ERP/WMS
Хотите внедрить ML-прогнозирование спроса?
Мы строим системы прогнозирования для ритейла и дистрибуции. Помогаем сократить запасы на 25-40% и избежать дефицита. Проведем аудит данных бесплатно.
📞 +7 (924) 547-36-78 📧 info@bi-ai.ru 💬 Telegram: @bi_ai_team