Skip to content

creation of an interface and algorithm for forecasting demand for 14 days for goods of own production

Notifications You must be signed in to change notification settings

denis-42ds/demand_forecast_retailer

Repository files navigation

Название проекта: Разработка алгоритма и интерфейса предсказательной модели для компании, занимающейся розничной торговлей

Статус проекта: в работе

Заказчик: ООО "Лента"

Описание рабочих файлов и директорий:

  • demand_forecast.ipynb - рабочая тетрадь с исследованиями, визуализациями и текстовыми описаниями
  • requirements.txt - список зависимостей, необходимых для работы проекта, а также их версии
  • regression_research_class.py - файл, содержащий класс для проведения исследования
  • assets - директория с сохранёнными артефактами
  • service - директория с приложением

Установка зависимостей и просмотр исследования

git clone https://github.com/denis-42ds/demand_forecast_retailer.git
cd demand_forecast_retailer
pip install -r requirements.txt
jupyter lab

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


Необходимо создать интерфейс и алгоритм прогноза спроса на 14 дней для товаров собственного производства.
Гранулярность ТК-SKU-День.
Прогноз позволит повысить доступность и продажи в ТК, без повышения списаний и повышение маржинальности.
При изготовлении товаров СП сотрудники будут ориентироваться не на экспертный подход, а на ML прогноз спроса,
в соответствии с которым будут изготавливать продукцию и планировать заказы сырья.

Цель проекта

  • Прогноз спроса для товаров СП с ежедневным обновлением.
  • Метрика точности WAPE:
def wape(y_true: np.array, y_pred: np.array):
    return np.sum(np.abs(y_true-y_pred))/np.sum(np.abs(y_true))

Ход исследования

  • Предобработка данных
  • Объединение датафреймов, исследование общей таблицы
  • Добавление информации о выходных и праздничных днях в РФ
  • Исследована корреляция признаков, сезонность и тренд
  • Разделение на выборки
  • Применение техник кодирования с учётом моделей, которые будут использованы
  • Масштабирование данных (при необходимости)
  • Обучение трёх моделей на тренировочной выборке (подбор гиперпараметров)
  • Выбор оптимальной модели (по результатам кросс-валидации, метрика WAPE)
  • Проверка качества лучшей модели на тестовой выборке (метрика: WAPE), выявление важности признаков
  • Отчёт

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

  • python: pandas, numpy, matplotlib, seaborn, phik, scikit-learn, lightgbm, optuna;
  • mlflow;
  • postgresql;
  • docker

Заключение по исследованию:

  • Предоставленные данные объединены в единый датафрейм, к ним присоединена информация о праздничных и выходных днях в РФ
  • Проведено исследование на корреляцию в признаках, удалены зависимые признаки
  • Проведено исследование на сезонность и тренд
  • Добавлены синтетические признаки (лаги, даты, скользящее среднее)
  • Для подготовки данных и обучения модели использован пайплайн с энкодерами
  • Для прогнозирования применена применены модели различных типов:
    • Линейная регрессия;
    • Случайный лес;
    • Градиентный бустинг
  • Наилучшим образом себя показала модель градиентного бустинга LightGBM с подобранными при помощи Randomized Search
    оптимальными гиперпараметрами: показатель wape на трейне 0.733
  • На тестовой выборке показатель wape получен 0.739
  • Анализ значимости признаков показал, что наиболее важные признаки - st_id, day, day_of_year
  • Конечная модель обучена на полном наборе данных.

About

creation of an interface and algorithm for forecasting demand for 14 days for goods of own production

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published