Skip to content
This repository has been archived by the owner on Jan 5, 2024. It is now read-only.
/ Proj_Lenta Public archive

Классический ML. Проект Хакатона для торговой сети "Лента". Модель предсказаний производства товаров на 14 дней.

Notifications You must be signed in to change notification settings

Vdol22/Proj_Lenta

Repository files navigation

Proj_Lenta

Модель предсказаний производства товаров на 14 дней.

Описание задачи

  • разработать алгоритм прогнозирования спроса на товар собственного производства на 14 дней для сети магазинов ЛЕНТА;
  • оценить качество алгоритма по метрике WAPE.

Описание данных

  • sales_df_train.csv - данные по продажам за скользящий год для обучения.
  • pr_df.csv - данные по товарной иерархии.
  • pr_st.csv - данные по магазинам.

Используемые инструмент

Pandas, Faiss, NumPy, Sklearn, Matplotlip, Lightgbm, Xgboost, Statsmodels

План работы

  1. Предварительная обработка, ознакомление с данными. Загрузить датафремы, провести анализ данных. Наметить план дальнейшей работы с данными. Проверить и устранить наличие пропусков, явных дубликатов. Привести к необходимым типам данных.
  2. Анализ данных. Проведение анализа данных, построение графиков распределения, обнаружение и обработка аномальных выбросов.
  3. Генерация дополнительных признаков.
  4. Обучение моделей. Подбор гиперпараметров, обучение и выбор наилучших моделей для тестирования.
  5. Тестирование. Проверка модели на тестовой выборке.

Описание проекта

  1. Предварительная обработка и ознакомление с данными.
  • Данные, представленые в 3 таблицах были обьединены в единую таблицу.

  • Итоговый датафрейм содержит 883015 строк и 18 столбцов.

  • Столбец date содержит информацию о датах продаж, поэтому был приведен к формату datetime.

  • При первичном ознакомлении с данными пропусков не было обнаружено, но в данных присутствует небольшое количество отрицательных значений. Поскольку нам предоставлены данные о продажах, то отрицательные значения могли возникнуть по нескольким причинами: возврат товар, списание товара или ошибка при выгрузке данных. Такие данные решили исключить из анализа, поскольку количество таких позиций небольшое, а природа происхождения не ясна.

  1. Анализ данных

    При изучении общего распределения данных было выявлено следующее:

    • В данных представлена информация о 12 магазинах из 7 городов. Продажи некоторых магазинов составляют менее 1% от общего объёма данных. При изучении этой информации было обнаружено, что присутствуют магазины, которые недавно были открыты.

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

    • При изучении распределении продаж во времени обнаружен всплески продаж, которые можно связать с праздниками (Новый год, 23 февраля, 8 марта, Пасха, 9 мая и т.д.)

  2. Генерация дополнительных признаков

В качестве дополнительных признаков был сгенерирован признак на основе праздников, а также добавлены различные лаговые и временные признаки.

  1. Обучение моделей

    Для решения данной задачи было принято решение использовать двухуровневый ансамбль моделей. Для моделей первого уровня были выбраны: 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

  1. Тестирование

Тестирование проводилось на тестовой выборке. WAPE для мета-модели на тесте: 0.048676085

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

About

Классический ML. Проект Хакатона для торговой сети "Лента". Модель предсказаний производства товаров на 14 дней.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages