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

Обновление статьи от 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%) позволяет определять оптимальный товарный запас с высокой точностью. За исключением скоропортящихся продуктов, для которых магазин имеет высокий реальный дефицит, все товарные остатки рекомендуемые системой оказались значительно ниже реальных. В случае скоропортящихся товаров необходимо определить, что является наиболее важным для магазина – отсутствие дефицита или избытка. Исходя из данного соображения, установить уровень страхового запаса для скоропортящихся товаров. Таким образом, применение программного средства позволит высвободить значительные оборотные средства и направить их в более эффективное русло. Разработанные алгоритмы показали свою эффективность в условиях нестабильного спроса, изменения рыночной ситуации, наличии неслучайного отсутствия спроса.

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

Готовы ответить на вопросы
и показать Forecast NOW! в деле
Наши специалисты готовы провести демонстрацию программы и представить ее на самостоятельное ознакомление, рассчитать стоимость внедрения и сроки окупаемости, проконсультировать о лучших практиках управления запасами.
Телеграм-канал и рассылка
Актуальные материалы по теме управления товарными запасами и наши исследования.
Учебный курс
Управление товарными запасами для специалистов по закупкам.