Модель предсказаний производства товаров на 14 дней.
- разработать алгоритм прогнозирования спроса на товар собственного производства на 14 дней для сети магазинов ЛЕНТА;
- оценить качество алгоритма по метрике WAPE.
- sales_df_train.csv - данные по продажам за скользящий год для обучения.
- pr_df.csv - данные по товарной иерархии.
- pr_st.csv - данные по магазинам.
Pandas, Faiss, NumPy, Sklearn, Matplotlip, Lightgbm, Xgboost, Statsmodels
- Предварительная обработка, ознакомление с данными. Загрузить датафремы, провести анализ данных. Наметить план дальнейшей работы с данными. Проверить и устранить наличие пропусков, явных дубликатов. Привести к необходимым типам данных.
- Анализ данных. Проведение анализа данных, построение графиков распределения, обнаружение и обработка аномальных выбросов.
- Генерация дополнительных признаков.
- Обучение моделей. Подбор гиперпараметров, обучение и выбор наилучших моделей для тестирования.
- Тестирование. Проверка модели на тестовой выборке.
- Предварительная обработка и ознакомление с данными.
-
Данные, представленые в 3 таблицах были обьединены в единую таблицу.
-
Итоговый датафрейм содержит 883015 строк и 18 столбцов.
-
Столбец date содержит информацию о датах продаж, поэтому был приведен к формату datetime.
-
При первичном ознакомлении с данными пропусков не было обнаружено, но в данных присутствует небольшое количество отрицательных значений. Поскольку нам предоставлены данные о продажах, то отрицательные значения могли возникнуть по нескольким причинами: возврат товар, списание товара или ошибка при выгрузке данных. Такие данные решили исключить из анализа, поскольку количество таких позиций небольшое, а природа происхождения не ясна.
-
Анализ данных
При изучении общего распределения данных было выявлено следующее:
-
В данных представлена информация о 12 магазинах из 7 городов. Продажи некоторых магазинов составляют менее 1% от общего объёма данных. При изучении этой информации было обнаружено, что присутствуют магазины, которые недавно были открыты.
-
Среди групп и категорий товаров наблюдается не равномерное распредение. Нулевые продажи с не нулевым количеством продаж в штуках были заполнены произведением количества проданного товара на среднюю стоимость данной позиции.
-
При изучении распределении продаж во времени обнаружен всплески продаж, которые можно связать с праздниками (Новый год, 23 февраля, 8 марта, Пасха, 9 мая и т.д.)
-
-
Генерация дополнительных признаков
В качестве дополнительных признаков был сгенерирован признак на основе праздников, а также добавлены различные лаговые и временные признаки.
-
Обучение моделей
Для решения данной задачи было принято решение использовать двухуровневый ансамбль моделей. Для моделей первого уровня были выбраны: Lasso, DecisionTreeRegressor, XGBRegressor и LGBMRegressor. В качестве мета-модели применялась LinearRegressor. Параметры для моделей первого уровня подбирались с помощью GridSearch на обучающей выборке и также применялась кросс-валидация. Для обучения мета-модели получали предсказания на валидационной выборке от моделей первого уровня и на них уже обучалась мета-модель. Метрика WAPE моделей первого уровня:
- WAPE для модели: Lasso: 0.06210926084591648
- WAPE для модели: DecisionTreeRegressor: 0.028886997180707905
- WAPE для модели: XGBRegressor: 0.034871257364442944
- WAPE для модели: LGBMRegressor: 0.03212815399031465
Метрика WAPE мета-модели: 0.05097038
- Тестирование
Тестирование проводилось на тестовой выборке. WAPE для мета-модели на тесте: 0.048676085
При анализе важности признаков самым важным для всех моделей оказался индекс сезонности. Простые модели (Lasso и DecisionTreeRegressor) ориентируется в большей степени на этот признак, а остальные игнорируют. А вот модели гралиентного бустнига, помимо индекса сезонности, также учитывают большинство других признаков.