Вы находитесь на странице: 1из 14

3.1.4.10.3.

Техническая документация
1) Предиктивное ценообразование (DPM-2)
Данные
Описание модели
Сценарий использования
Архитектура

2) Прогнозирование спроса
Данные
Описание модели
Сценарий использования
Архитектура

1) Предиктивное ценообразование (DPM-2)


Данные

Основным источником данных являются исторические данные РРЦ. Они содержат записи для каждой позиции SKU и города о цене за определенный день.
Данные доступны в таблице сервераhanabwprod-01"_SYS_BIC"."BW_PUBLIC_MODELS.CRM.DPM2/YBS_DPM2_23METMODEL_PUBLIC"

В качестве дополнительных данных для генерации признаков с целью улучшения качества, были использованы следующие источники:

1. Данные об остатках на складах по позициям SKU. Данные доступны в таблице"_SYS_BIC"."BW_PUBLIC_MODELS.CRM.EKZ/YBS_STOCK_PUBLIC"


2. Данные о реальном экспорте. Данные доступны в таблице"_SYS_BIC"."BW_PUBLIC_MODELS.CRM.EKZ/YBS_BILLS_PUBLIC"
3. Данные о прогнозном экспорте. Данные доступны в таблице "_SYS_BIC"."BW_PUBLIC_MODELS.CRM.EKZ/YBS_APO_4FORECAST_PUBLIC"
4. Данные об индексах цен (МеталлЭксперт,Bloomberg). Данные доступны в таблице"_SYS_BIC"."BW_PUBLIC_MODELS.CRM.DPM2
/YBS_DPM2_INDEX_PUBLIC"

Target: значение РРЦ для каждой позиции для каждого из последующих 14 дней.

Описание модели

Признаки, извлеченные из данных для использования в модели:

История РРЦ:

1.Лаговые значения: t-1, t-2,…t-30

2.Максимум и минимум цены за последние 30 дней

3.Признаки, сгенерированные tsfresh (для конфигурации Efficient Parameters)

Реальный экспорт

1.Максимум за последние 30 дней

2.Признаки, сгенерированные tsfresh (для конфигурации Efficient Parameters)

Остатки на складах

1.Максимум и минимум за последние 30 дней

2.Признаки, сгенерированные tsfresh (для конфигурации Efficient Parameters)

Поскольку генерируется большое количество признаков (не менее 32), используется отбор признаков стратегией Forward Selection:

1. На первом этапе строятся модели, использующие один признак, из них выбирается модель с наилучшей точностью на валидационной выборке
2. На следующих этапах ранее отобранные признаки сохраняются, к ним добавляются новые признаки, и снова выбирается модель с наилучшей
точностью.
3. После отбора выбирается модель, показавшая наилучшую точность на всех комбинациях признаков.
Для валидации моделей используется метод train-test split с соотношением обучающей и тестовой выборки 80:20 со стратификацией по SKU и городу. Для
обучения используются данные с 2017 года.

На сгенерированных фичах были протестированы различные модели: Prophet (без фичей только на самом временном ряду), Random Forest, LightGBM,
XGBoost. На текущий момент лучший результат показала модель LightGBM со следующими параметрами:

reg_lambda=0.05,

learning_rate=0.05,

num_leaves=32,

metric='rmse',

objective='regression',

subsample=0.75,

verbosity=-1,

n_jobs=2

Модель представляет собой ансамбль из 14 LGBM моделей, который предсказывает РРЦ на 14 дней вперед:отобранныепризнаки→ Модельn→ Деньn

Метрика точности представляет собой среднюю абсолютную процентную ошибку (MAPE):

Сравнение MAPЕ старой модели (NaivePlus) и текущей стабильной:

DAY_DELTA MAPE NaivePlus MAPE LGBM DIFF

0 days 0,560966 0,529443098 0,031522923

1 days 0,809205 0,663286987 0,145917986

2 days 0,936676 0,693705112 0,242970941

3 days 1,242753 0,831115831 0,411637576

4 days 1,648947 0,993210528 0,655736

5 days 1,933721 1,087740157 0,845981147

6 days 2,215282 1,182186487 1,033095494

7 days 2,674467 1,299357194 1,375109505

8 days 3,082809 1,394205136 1,688603469

9 days 3,487874 1,590087654 1,8977864

10 days 3,916677 1,716505155 2,200172311

11 days 4,332116 1,797839754 2,534275988

12 days 4,743787 1,947584015 2,796203447

13 days 5,159848 2,171358032 2,988490275

Важность признаков в зависимости от дня прогноза:


Сценарий использования

На данном этапе осуществляется автоматический запуск программы по внутреннему расписанию в 10:00 каждый день. Предсказания следующего вида
заносятся в таблицу"PY_IMPORT"."YBS.SD.DPM2::FORECAST_NEW"вида:

ВИД ПРОДУКЦИИ ГОРОД ДАТА ЗАПУСКА ДАТА ПРЕДСКАЗАНИЯ Прогноз РРЦ МОДЕЛЬ

РУЛОН ОЦИНК. МОСКВА 08.03.2021 09.03.2021 92405.71999999975 NaivePlusModel

РУЛОН ОЦИНК. МОСКВА 08.03.2021 09.03.2021 94405.534226534 LGBM

РУЛОН ОЦИНК. МОСКВА 08.03.2021 10.03.2021 92406.7235134626 NaivePlusModel

РУЛОН ОЦИНК. МОСКВА 08.03.2021 10.03.2021 9622.231252314 LGBM

РУЛОН ОЦИНК. МОСКВА 08.03.2021 11.03.2021 93108.32142230 NaivePlusModel

РУЛОН ОЦИНК. МОСКВА 08.03.2021 11.03.2021 98.242353435442 LGBM

На основании прогноза РРЦ ГЦО выставляем МБЦ, МПП - БЦ

Архитектура

Модель сопровождается скриптами, выполняющими роль ETL-пайплайна (Airflow-like). Этапы пайплайна:

1. Загрузка сырых данных из БД/файла


2. Расчет РРЦ на стороне модели (сейчас выключен)
3. Сглаживание ряда РРЦ (сейчас выключено)
4. Разбивание данных по видам продукции/городам
5. Обучение моделей
6. Получение предсказаний
7. Запись предсказаний в БД/файл

8.
8. Актуализация данных РРЦ

Модель и сопутствующие скрипты упаковываются в Docker-контейнер, который отправляется в Artifactory. Оттуда с помощью Rancher контейнер деплоится
под k8s.

----

2) Прогнозирование спроса
Данные

Основным источником данных являются исторические данные продаж. Они содержат записи для каждой позицииSKUи города о сумме продаж (в тоннах) за
неделю. Данные доступны в таблице сервераhanabwprod-01 "_SYS_BIC"."BW_PUBLIC_MODELS.CRM.EKZ/YBS_BILLS_4FORECAST_PUBLIC"

В качестве дополнительных данных для генерации фичей с целью улучшения качества, были использованы следующие источники:

1. Данные о прогнозах экспорта – прогноз на каждый месяц по экспорту для больших групп товаров (ручной маппинг наSKU) - на данный момент excel
file, периодически обновляемый. Пример из файла:

Продукт SKU Переменные План спроса( в т.ч. РЭН


планирования затраты, руб и дл. соглашения),тонн
на тонну

Арматура <28-40> SKU000000000000003, SKU000000000000006, SKU000000000000016, SKU000000000000032 24 094,87 113,333


прт

Арматура <10-13> SKU000000000000005, SKU000000000000007, SKU000000000000008, SKU000000000000020 23 818,96 173,042


прт

Лист г/к <1400- SKU000000000000258, SKU000000000000259, SKU000000000000260, 22 616,63 1 014,663


1840> <10-16> НЛГ SKU000000000000468, SKU000000000000469, SKU000000000000354, SKU000000000000355

Прокат х/к <1200- SKU000000000000281, SKU000000000000282, SKU000000000000280, SKU000000000000288, 22 944,33 169,979


1750> <1,21-3,2> SKU000000000000289, SKU000000000000290, SKU000000000000291, SKU000000000000421
ВПР

Лист г/к <1400- SKU000000000000261, SKU000000000000262, SKU000000000000263, SKU000000000000264, 20 535,77 804,351


1840> <0,6-9,99 SKU000000000000403, SKU000000000000427, SKU000000000000428
> РЯД
2. Данные об индексах цен (МеталлЭксперт,Bloomberg) – значения цен на схожие с имеющимисяSKUпозициями. Данные доступны в таблице"_SYS_BIC".
"BW_PUBLIC_MODELS.CRM.EKZ/YBS_STOCK_PUBLIC"
3. Данные об остатках на складах по позициямSKU. Данные доступны в таблице"_SYS_BIC"."BW_PUBLIC_MODELS.CRM.DPM2
/YBS_DPM2_FAKESKU_REST_PUBLIC"
4. Данные о реальном экспорте. Данные доступны в таблице"_SYS_BIC"."BW_PUBLIC_MODELS.CRM.EKZ/YBS_BILLS_PUBLIC"

Target: значение продаж (в тоннах) для каждогоSKUдля каждой из последующих 13 (76) недель

Описание модели

Признаки, извлеченные из данных для использования в модели:

История продаж:

1.Лаговые значения: t-1, t-2,…t-26

2.Скользящие средние: среднее значение продаж за последние 5 недель для каждого t

3.Экоспоненциальное сглаживание для каждого t, c alpha = 0.1

4.Скользящие значения: минимум и максимум продаж за последние 5 недель для каждого t


Прогнозируемый экспорт

1.Лаговые значения: t-1, t-2,…t-26

2.Отдельные категории: внутренний рынок, внешний рынок, внутренний транс

Реальный экспорт

1.Лаговые значения: t-1, t-2,…t-26

Остатки на складах

1.Лаговые значения: t-1, t-2,…t-26

Информация с сайтовBloombergи МеталлЭксперт:

1.Лаговые значения для большого списка продуктов (арматура, прокат полимерный, шевеллер итд): t-1, t-2,…t-26

2.Аггрегации изменений в течение каждой недели (минимальные значения цены, максимальные, средние)

Временные значения:

1.Номер недели, год, квартал, месяц

На сгенерированных фичах были протестированы различные модели: Prophet (без фичей только на самом временном ряду), Random Forest, LightGBM,
XGBoost, а так же ансамбли из комбинации моделей, сверточные (1d conv) и рекуррентные (GRU) нейронные сети. На текущий момент лучший результат
показала модель LightGBM со следующими параметрами:

'objective' : 'poisson',
'metric' :'mean_squared_error',
'learning_rate' : 0.005,
'bagging_fraction' : 0.75,
'subsample_freq' : 1,
'reg_lambda' : 0.05,
'verbosity': -1,
'num_iterations': 1000,
'num_leaves': 128,
'min_child_samples': 35,
'colsample_bytree': 0.8

Модель представляет собой ансамбль из 13 LGBM моделей, который предсказывает спрос на 13 недель вперед:лаги t-n и ранее→ Модель n→ Неделя n

Для каждой недели на периоде с 26.09.2019 происходит разбиение выборки, все что до этой даты, уходит в трейн сет, на котором происходит обучение, а
следующие 13 недель используются для предикта, результаты собираются в отдельный датафрейм:
Метрика точности представляет собой взвешенное среднее на 5 неделях по следующему алгоритму:

Модель показала следующую важность фичей:


Таким образом наиболее влиятельные фичи:

1) Остатки на складах

2) Сам sku

3) Статистические характеристики исторического ряда спроса на sku

4) Реальный экспорт

5) Прогнозируемый экспорт

Далее прогноз модели сравнивается с прогнозами экспертов (cреднее по всем 5-недельным интервалам):
Сценарий использования

На данном этапе весь пайплайн состоит из следующих этапов:

1. выгрузки данных
2. обработка данных и генерация фич
3. обучение модели с генерацией прогноза.

Текущий способ использования ручной запуск программы каждую неделю для составления прогноза на 13 недель вперед. Выглядит прогноз следующим
образом:
где:

sales–прогноз продаж (в тоннах),

item_id–SKU,

state_id– идентификатор города,

date–неделя на которую осуществляется прогноз.

Прогноз модели сравнивается с экспертным и статистическим прогнозами и согласованные результаты используются как окончательные для консенсус-
прогноза.

Архитектура

Модель сопровождается скриптами, выполняющими роль ETL-пайплайна (Airflow-like). Этапы пайплайна:

1. Загрузка сырых данных из БД/файла


2. Разбивание данных по видам продукции/городам
3. Обучение моделей
4. Получение предсказаний
5. Запись предсказаний в БД/файл
6. Актуализация данных РРЦ

Модель и сопутсвующие скрипты упаковываются в Docker-контейнер, который отправляется в Artifactory. Оттуда с помощью Rancher контейнер деплоится под
k8s.

---

По любым вопросам: Боровикова Елизавета (ev.borovikova@severstal.com)