Название проекта: Разработка алгоритма и интерфейса предсказательной модели для компании, занимающейся розничной торговлей
- 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
- Конечная модель обучена на полном наборе данных.