Недельный спрос на каждую позицию номенклатуры на каждой базе сети на 1–4 недели вперёд.
Формально: для ряда i = (база, позиция) и недели t, последней известной на момент прогноза, нужно оценить продажи yi, t+h в единицах товара для горизонтов h = 1, 2, 3, 4. Оценка строится только по данным, известным к концу недели t: истории продаж, календарю и справочникам.
| Параметр | Значение |
|---|---|
| Объект прогноза | пара «база × позиция», 3 347 рядов |
| Шаг | календарная неделя с понедельника |
| Горизонт | 1–4 недели, отдельная модель на каждый |
| Целевая величина | продажи по выполненным заказам в единицах товара (м, шт., листы, рулоны, упаковки, кг) |
| История | 260 полных недель: 04.10.2021 — 27.09.2026 |
Проект вырос из выпускной квалификационной работы «Разработка приложения для анализа и прогнозирования продаж организации» (ТГУ, 2024): приложение на случайном лесе строило прогноз месячной выручки и продаж по пяти категориям на 3, 6 или 12 месяцев. Пересказ работы и разбор того, что с тех пор пересмотрено, — в diploma.md.
Новая версия сохраняет предметную область, но меняет постановку: вместо месячной выручки по категориям — недельный спрос по позициям и складам. Почему — ниже.
В дипломной работе 2024 года прогнозировалась месячная выручка и продажи по пяти укрупнённым категориям. Такой прогноз полезен для отчётности, но на его основе нельзя принять ни одного операционного решения: нельзя понять, сколько арматуры 12 мм заказать на Юнгородок или сколько профнастила переместить на минимаркет. Решения о закупках и перемещениях принимаются по конкретной позиции на конкретном складе, поэтому и прогноз нужен на этом уровне.
Количество, а не выручка, выбрано потому, что выручка — произведение количества на цену, а цена металлопроката заметно колеблется вслед за биржевыми ценами. Прогноз выручки смешивает две задачи: прогноз спроса и прогноз цены. Склад работает с количеством.
- День слишком шумный: по большинству позиций продажи в отдельный день — ноль или единичная покупка, а дневной ритм (будни, выходные) для закупок не важен.
- Месяц даёт за пять лет всего 60 точек на ряд — мало для обучения — и не совпадает с циклом пополнения: поставщики привозят металл за 2–10 дней, а минимаркеты получают перемещения с хаба в среднем 1–2 раза в неделю.
- Неделя совпадает с ритмом планирования закупок, сглаживает дневной шум и даёт 260 точек на ряд.
Горизонт определяется тем, на что прогноз может повлиять. Заказ поставщику, сделанный сегодня,
приходит через 2–10 дней (поле suppliers.lead_time_days), перемещение с хаба — быстрее.
Прогноз на 1–4 недели покрывает срок поставки и следующий за ним цикл заказа. Более длинные
горизонты нужны для бюджетирования, но там уместнее прогноз на уровне категорий, а не позиций.
3 347 рядов нельзя настраивать по одному вручную, а у большинства из них продажи прерывистые: в 59 % недель продаж нет (см. датасет). Поэтому задача ставится как прогноз для панели рядов одной общей моделью — см. выбор модели.
- Прогноза цены и выручки — по причинам, описанным выше.
- Восстановления спроса при дефиците. В данных есть недели, когда товар закончился и продажи упали до нуля. Модель обучается на продажах, то есть на спросе, ограниченном остатком. Это главное известное ограничение — см. результаты.
- Оптимизации запасов — расчёта точки заказа и страхового запаса. Прогноз — вход для такой задачи, но сама она в проект не входит.
| Документ | Содержание |
|---|---|
| diploma.md | дипломная работа 2024 года и что в ней пересмотрено |
| dataset.md | откуда данные и почему они синтетические |
| database.md | модель данных учётной системы в PostgreSQL |
| preprocessing.md | недельная панель, признаки, защита от утечки будущего |
| model.md | выбор модели и схема проверки |
| metrics.md | метрики, результаты, ограничения |
| testing.md | юнит-тесты |
| application.md | архитектура приложения и точки входа |
| references.md | литература |