В статье представлен подход к прогнозированию временных рядов на заданный промежуток учитывающий сезонность продаж.
Ключевые слова: прогнозирование временных рядов, LSTM-сети, рекуррентные нейронные сети.
В условиях нестабильного рынка деятельность любого бизнеса зависит от точности определения необходимого объема закупок. На плечи закупщика ложится тяжелая задача расчета оптимального количества ликвидного товара. Низкий товарный запас порождает дефицит и негативно сказывается на лояльности клиентов, и напротив, чрезмерное количество влечет издержки хранения. Для определения закономерностей в данных по продажам и построения прогноза, учитывающего колебания спроса и сезонности необходимого количества продукта, отлично подходят нейронные сети.
Нейронная сеть
Центральным моментом при составлении прогноза закупок товаров является то, что существует множество непредсказуемых факторов, приводящих к сложным временным зависимостям. Нейронные сети являются одним из методов, который способен учесть большое количество факторов, сезонность и историю продаж. Они устойчивы в разумных пределах к помехам во входных данных и могут даже поддерживать обучение и прогнозирование при наличии пропущенных значений. Также важным свойством нейронной сети является обобщающая способность — способность выдавать правильные результаты не только для данных участвующих в обучении, но и для новых. Нейронные сети не исходят из априорных предположений о функциональной взаимосвязи ряда и его независимых переменных, что является весьма желательной характеристикой в случае работы с временными рядами.
При использовании сетей прямого распространения подразумевается, что все входы и выходы независимы [1], но для задачи прогнозирования временного ряда это не подходит. Рекуррентные нейронные сети (RNN), называются рекуррентными, потому что они имеют обратные связи и выполняют одну и ту же задачу для каждого элемента последовательности и выход зависит от предыдущих вычислений [2]. Каждый нейрон может использовать свою внутреннюю память для хранения информации о предыдущем состоянии сети. RNN имеет обратные связи, которые позволяют передавать информацию от одного шага сети к следующему. Однако, фундаментальная проблема использования простых рекуррентных сетей заключается в том, что они способны обнаруживать только краткосрочные зависимости. Причиной этого является проблема отсутствия долгосрочной памяти. В простых RNN нейроны хорошо «помнят» недавно полученную информацию, но не имеют возможности надолго сохранить информацию в памяти.
Нейронные сети с долгой краткосрочной памятью (LSTM) [3] представляют собой особый тип RNN, которые имеют более длинную «память», чем их предшественники, и способны изучать долгосрочные зависимости. В LSTM блок работает как обычный рекуррентный блок, но имеет дополнительную ячейку памяти и различные фильтры, обычно называемые вентилями. Вентили помогают определить долгосрочные зависимости, управляя потоком данных внутри блока. Ячейка дает сети своего рода память и сохраняет долгосрочные зависимости. Процесс обучения и обратного распространения здесь работает так же, как и в обычной RNN, но с добавлением, что вентили также имеют веса. Таким образом, модель становится лучше в определении правильной информации, что приводит к хорошим прогнозам. Поэтому использовалась архитектура на основе LSTM-ячеек.
Обучение и тестирование
Для разработки и тестирования нейронной сети была взята двухгодичная база данных продаж онлайн магазина содержащая в себе 1 400 000 записей. Компания специализируется на продаже сувенирной продукции.
Для повышения качества работы нейронной сети были выделены следующие признаки:
– Время совершения продажи.
– Был ли в этот день праздник.
– Количество дней до ближайшего праздника. В предпраздничные дни возможно сильное повышение уровня продаж и, если запасы окажутся недостаточными, это чревато высоким уровнем упущенной прибыли.
– Общий тренд. Изменение средней цены товара в зависимости от времени, цена постепенно повышается или понижается.
При составлении прогноза закупок важно не допустить дефицита товара на складе. Небольшие излишки товара можно назвать страховым запасом, а отсутствие необходимого товара при обращении клиента несет, как минимум — потерю выручки, а как максимум — ущерб имиджу компании. Чтобы учесть этот фактор при обучении, в качестве функции ошибки будем использовать асимметричную квадратичную ошибку (1), которая обеспечивает более высокое значение ошибки, когда модель предсказывает значение ниже реального [4].
Также, чтобы повысить эффективность обучения, важно уменьшать шаг обучения на каждой эпохе. В данной реализации уменьшение скорости обучения происходит раз в 10 эпох. Чтобы не допустить переобучения нейронной сети, важно следить за ошибкой валидации. Когда она начинает возрастать, необходимо остановить обучение.
Для того, чтобы проверить качество разработанной нейронной сети, была использована отложенная выборка. Выборку разбили на две части, 80 % использовались для обучения, а 20 % данных были отложены для тестирования. Ниже (табл.1 и рис.1) представлены результаты тестирования.
Таблица 1
Результаты тестирования
train |
valid |
test |
|
Средняя абсолютная ошибка |
33.97396061691954 |
35.91977171419663 |
37.123308042252916 |
Средняя квадратичная ошибка |
1154.23 |
1290.23 |
1378.14 |
Ассиметричная квадратичная ошибка |
1466.56 |
1722.0 |
1879.34 |
Рис.1. Предсказание для всех товаров
Литература:
- С. Хайкин, Нейронные сети: полный курс, 2-е изд., испр.: Пер. с англ. — М.: ООО «И. Д. Вильямс», 2006, 1104 стр.
- Introduction to Recurrent Neural Network [Электрон.ресурс] — URL: www.geeksforgeeks.org/introduction-to-recurrent-neural-network/
- Essentials of Deep Learning: Introduction to Long Short Term Memory [Электрон.ресурс] — URL: www.analyticsvidhya.com/blog/2017/12/fundamentals-of-deep-learning-introduction-to-lstm
- Kevin Aretz, Söhnke M, «Асимметричные функции потерь и рациональность ожидаемой доходности фонда». Международный журнал по прогнозированию.
- A Beginner's Guide to LSTMs and Recurrent Neural Networks [Электрон.ресурс] — URL: www.pathmind.com/wiki/lstm