Нейронные сети в прогнозировании спроса

Обновление статьи от 05.07.2019г.

В статье описан подход, использующий нейронные сети и генетические алгоритмы, от которого мы отказались в пользу вероятностных алгоритмов. Их применение дает лучшие результаты. Подробнее об можно прочесть в статье "От нейронных сетей к вероятностным алгоритмам".

Для оценки качества прогноза в статье используется метрика sMAPE. На текущий момент мы не рекомендуем ее использовать, так как более объективной для бизнеса является оценка потерь в деньгах. Подробнее о нашем подходе читайте в статье "Почему мы не считаем MAPE, RMSE и другие математические ошибки при прогнозировании спроса".

manual

Совместно с представителями одной из торговых сетевых компаний города были выбраны 362 продукта для оценки эффективности работы программы. Для тестирования была предоставлена база данных с историей продаж за 1 год и месяц. Продукты были выбраны таким образом, чтобы как можно более полно были представлены всевозможные случаи продаж разного рода:

  • ярко выраженная недельная сезонность,
  • наличие другой краткосрочной сезонности
  • отсутствие краткосрочной сезонности
  • наличие/отсутствие тренда,
  • товары с высокой/низкой частотой продажи
  • большие/низкие объемы среднесуточных продаж
  • неслучайное отсутствие спроса,
  • ограниченный спрос в условиях дефицита товара
  • короткая история продаж (2-3 месяца)
  • относительно длительная история продаж (более полугода)

Для каждого товара было построено 8 прогнозов, каждый на неделю. Таким образом, был смоделирован процесс работы пользователя с программой в течение 56 дней. Расписание приезда поставщиков было выбрано точно таким же, как на самом деле происходили поставки. Качество прогноза оценивалось по ошибке sMAPE, которая рассчитывалась исключительно на прогнозируемом промежутке, что позволяет говорить об объективности такой оценки в реальных условиях. Для расчета ошибки были получены реальные продажи на данном участке и вычислено абсолютное отклонение от прогноза в процентах.

Результаты по точности прогнозирования представлены в таблице ниже.

 

 

№ п/п

Ошибка sMAPE

Точность %

11

0,0371627

96,28373

22

0,0389342

96,10658

33

0,0526248

94,73752

44

0,0587458

94,12542

55

0,0601749

93,98251

66

0,0606426

93,93574

77

0,0634405

93,65595

88

0,0690393

93,09607

99

0,0712231

92,87769

.

……………..

…………..

175

0,196098

80,3902

176

0,196202

80,3798

177

0,196631

80,3369

178

0,197859

80,2141

179

0,198162

80,1838

180

0,199609

80,0391

181

0,202048

79,7952

182

0,202186

79,7814

183

0,2024

79,76

.

………..

………….

360

0,317184

68,2816

361

0,318487

68,1513

362

0,319976

68,0024

 

0,19666426

80,3335738

Максимальная точность, которая была достигнута, составила 96,3%. Минимальная точность 68%. Средняя – 80,3%. Среднеквадратичное отклонение ошибки 5%. Данная величина показывает, что основная масса товаров спрогнозирована с точностью от 75 до 85%. Точность выше 75% достигнута на 292 товарах из 362, что составляет 80% от общего числа товаров. Высокая ошибка получена преимущественно на тех товарах, у которых наблюдается неожиданная смена тренда. Однако даже в таких условиях система показывает крайне хорошую точность прогноза, составляющую порядка 70%. Точность прогнозирования может быть повышена за счет увеличения истории продаж. В таком случае, могут быть учтены праздники, имеющие годовую сезонность, такие как Новый Год, 8 марта и пр.

Рассмотрим первый этап – построение прогнозов. Здесь и далее, красным представлены реальные продажи. Синие – прогнозируемые. Вертикальные пунктирные линии показывают прогнозируемые участки, горизонт прогнозирования 7 дней. Обучение системы происходило на данных, которые предшествуют вертикальным отметкам. Как можно заметить из данного графика, система хорошо адаптируется к резко меняющемуся тренду, даже в том случае, если таких изменений не наблюдалось в истории продаж ранее.

Прогноз 1

На графике ниже представлен товар с крайне высокочастотными продажами. Сложная ситуация для прогнозирования. Система успешно справляется с прогнозированием товаров подобного рода. Достигнутая точность – 73%.
 

Прогноз 2

На графике ниже представлен товар с ярко выраженной недельной периодичностью. Можно видеть, что система прогнозирует такой товар очень хорошо и необходимый страховой запас очень мал.
 

Прогноз 3

 

На следующем графике представлены продажи товара, имеющие дефекты в виде неслучайного отсутствия спроса, что выражено в виде провала спроса. Именно в эти моменты товара на складе оказывалось недостаточно. Также товар имеет тренд и высокочастотные полу-хаотичные продажи. Это вызвано также проблемами со складом. Как можно заметить, система сглаживает подобные явления, восстанавливает спрос и успешно обучается. Точность прогноза – 88%.

 

Прогноз 4

 

На данном графике представлен товар из разряда скоропортящихся, для которого неправильно выбран уровень закупки. Спрос ограничен 20 ед. товара, видны частые провалы из-за отсутствия товара на складе. Легко заметить сильный дефицит. Точность прогноза 90%. Дефицит устраняется предложенным страховым запасом.

Прогноз 5

На графике ниже представлен товар с ярко выраженной длительной сезонностью, сильно изменяющимся трендом. Система успешно замечает смену тренда, хотя период прогнозирования начинается именно на этом участке. Достигнута высокая точность прогноза 85%. Если при прогнозировании такого товара использовать простые методы учета среднесуточной уходимости товара, то на складе возникнет большой избыток товара, ввиду резкого изменения величины среднесуточной уходимости.

Прогноз 6

 

Прогнозируемые продажи еще не являются оптимальным товарным запасом. Поэтому здесь очень важно не приблизиться ко всем выбросам продаж, которые существуют в истории, а сгладить их наиболее приемлемым образом. После получения прогноза, высчитывается страховой товарный запас с учетом степени отклонения модели прогнозирования от реальных продаж. Оптимальный товарный запас складывается из величины страхового товарного запаса, помноженного на степень учета риска (различную для скоропортящихся и долгохранящихся товаров) и прогнозируемого значения продаж. Таким образом,

Оптимальный товарный запас = страховой запас * коэффициент риска + прогнозируемые продажи + минимальный товарный остаток

Примеры прогнозирования оптимального товарного запаса

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

Красным цветом – реальные остатки и их расход. Почти во всех случаях (за исключением дефицита, который в магазине характерен для скоропортящихся продуктов)  товарный запас, предложенный системой, оказался ниже, чем реальный товарный запас. При этом спрос был полностью удовлетворен. В случаях скоропортящегося товара возможно различное, на усмотрение менеджера по закупкам, поведение программы, либо использование страхового запаса и гарантированное (95% вероятность) отсутствие дефицита, либо гарантированное отсутствие избытка. 

На примере 6 можно видеть данный случай. Красный график показывает частое отсутствие товара. Прогноз выше, чем реальные остатки на страховой запас, что позволяет удовлетворить спрос в полной мере.

Пример 1

Оптимизация запасов 1

 

Пример 2

Оптимизация запасов 2

 

Пример 3

Оптимизация запасов 3
 

Пример 4

Оптимизация запасов 4

 

Пример 5

 За счет добавления страхового запаса можно избежать дефицита, если это необходимо.

Оптимизация запасов 5

 

Заключение

В ходе проведенного испытания алгоритмов и программного продукта в целом на одном из магазинов торговой сети города можно сделать выводы о целесообразности и экономической эффективности применения данного решения. Достигнутая точность прогнозирования (в среднем 80%) позволяет определять оптимальный товарный запас с высокой точностью. За исключением скоропортящихся продуктов, для которых магазин имеет высокий реальный дефицит, все товарные остатки рекомендуемые системой оказались значительно ниже реальных. В случае скоропортящихся товаров необходимо определить, что является наиболее важным для магазина – отсутствие дефицита или избытка. Исходя из данного соображения, установить уровень страхового запаса для скоропортящихся товаров. Таким образом, применение программного средства позволит высвободить значительные оборотные средства и направить их в более эффективное русло. Разработанные алгоритмы показали свою эффективность в условиях нестабильного спроса, изменения рыночной ситуации, наличии неслучайного отсутствия спроса.

Автор: Александр Грицай