МОДУЛЬ 6. Предиктивная аналитика и прогнозирование Out-of-Stock: алгоритмы, фичи, автоматизация
До этого момента мы рассматривали управление Out-of-Stock (OOS) как реактивный процесс — фиксировали факт отсутствия товара, анализировали причины, измеряли последствия. Однако современные бизнес-практики требуют перехода от реакции к предсказанию. Этот модуль посвящен построению предиктивных моделей, которые позволяют прогнозировать вероятность OOS и предотвращать его заранее.
Мы разберем, как работает предиктивная аналитика, какие модели и признаки (фичи) использовать, как готовить данные из DWH и запускать прогнозы в продуктивной BI-инфраструктуре.
Зачем прогнозировать OOS
Цель предиктивной аналитики — не просто зафиксировать, что товар отсутствует, а предсказать, что он скоро может исчезнуть с полки, и дать возможность предпринять действия заранее. Это особенно критично для KVI-товаров, акционных позиций и товаров с высокой сезонностью.
Преимущества предикции:
- сокращение потерь выручки
- снижение доли "проваленных" полок
- повышение удовлетворенности покупателей
- оптимизация логистики и заказов
- создание автоматизированных рекомендаций
Основная задача прогнозирования
Постановка задачи: предсказать вероятность события OOS для пары SKU x Store x Date на горизонте от 1 до 7 дней.
Тип задачи: бинарная классификация
Модель должна предсказать: будет ли товар отсутствовать на заданную дату (1) или нет (0).
Вариант 2: регрессия — предсказать объем потерянных продаж или длительность OOS.
Подготовка данных
Источником для модели является аналитическая витрина, сформированная в DWH (см. Модуль 5). В ней собраны:
- продажи
- остатки
- прогноз
- поставки
- планограммы
- метки OOS (target)
Дополнительно извлекаем внешние признаки:
- погода (температура, осадки)
- праздничные дни
- маркетинговые акции
- день недели
- сезонность
Структура датасета
Каждая строка датасета — это запись по SKU x Store x Date.
Признаки (фичи):
- avg_sales_7d — средние продажи за последние 7 дней
- stock_qty — текущий остаток
- forecast_qty — прогноз на дату
- last_delivery_days_ago — сколько дней прошло с последней поставки
- delivery_qty_7d — объем поставок за 7 дней
- is_kvi — признак важности товара
- dow — день недели
- promo_flag — флаг наличия акции
- temp_avg — средняя температура (если сезонозависимый товар)
- planogram_space — выделенное пространство на полке
Целевая переменная (target):
- is_oos_next_day — 1 если товар был в OOS на следующий день, иначе 0
Алгоритмы и модели
На практике для задачи прогнозирования OOS чаще всего используются следующие модели:
- Logistic Regression — базовый вариант, интерпретируемый
- Random Forest — устойчив к шумам, легко реализуется
- XGBoost — один из лучших алгоритмов для табличных данных
- LightGBM — ускоренный вариант XGBoost
- CatBoost — хорошо работает с категориальными признаками
- Neural Networks — реже, применяются в больших проектах с временными рядами
Рекомендуемая модель: XGBoostClassifier, благодаря скорости, устойчивости и высокой точности.
Пример реализации на Python (XGBoost)
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score
X = df.drop(['is_oos_next_day'], axis=1)
y = df['is_oos_next_day']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=True)
model = xgb.XGBClassifier(
max_depth=5,
learning_rate=0.1,
n_estimators=100,
objective='binary:logistic'
)
model.fit(X_train, y_train)
y_pred = model.predict_proba(X_test)[:, 1]
print('AUC:', roc_auc_score(y_test, y_pred))
Интерпретация и действия
После построения модели необходимо:
- Раз в сутки запускать прогноз по всем SKU x Store x Date
- Сохранять предсказания в витрину dm_oos_forecast
- Передавать значения в BI-систему
BI-примеры:
- Таблица риска: SKU с вероятностью OOS > 0.7
- Карта сети: магазины с наибольшим прогнозным риском
- График: сравнение факта и прогноза по дням
Автоматизация действий:
- если вероятность OOS > 0.8 и stock_qty < средних продаж — сформировать задачу в ERP
- если SKU критичен (is_kvi = 1) — при любом прогнозе выше 0.5 — отправка уведомления
Метрики качества модели
Оценка качества прогноза:
- AUC ROC — основная метрика для оценки бинарных классификаторов
- Precision / Recall — важно при большом дисбалансе классов
- Accuracy — общее качество
- Confusion Matrix — соотношение TP, FP, FN, TN
- Lift@TopK — насколько точно предсказывает верхнюю зону риска
Риски при внедрении предиктивной модели
|
Риск |
Меры |
|---|---|
|
Недостаточность данных |
Увеличить исторический период, подключить больше источников |
|
Переобучение модели |
Кросс-валидация, регуляризация |
|
Сезонные пики |
Отдельная модель по сезонам или добавление сезонных флагов |
|
Отсутствие интерпретации |
Использование SHAP / Feature importance |
|
Отсутствие бизнес-действия |
Интеграция в процессы закупок, логистики, операционного контроля |
Организация процесса автоматического прогноза
- DWH-слой: подготовка обучающих данных через витрины
- ML-слой: хранение моделей и запуск по расписанию (например, Airflow)
- BI-слой: визуализация результатов, управление действиями
- Интеграция: уведомления в Telegram, email, задачи в Jira или SAP
Предиктивная аналитика по Out-of-Stock — это переход от простой отчетности к проактивному управлению ассортиментом. Грамотно внедренная модель позволяет не только сокращать потери, но и строить интеллектуальные цепочки поставок.



