Прототип системы прогнозирования лидов и поддержки решений по рекламному бюджету с разделением каналов на два типа:
- Flow — быстрые каналы (контекст/диджитал), эффект почти мгновенный, возможен короткий “хвост”.
- Stock — “долгие” каналы (например, брендированные автомобили), где эффект создаётся активными рекламными юнитами и имеет стохастическую природу.
Проект делает упор на:
- интерпретируемость,
- робастность,
- консервативные оценки снизу (для принятия решений),
- вероятностные коридоры неопределённости (для Stock).
Моделируем зависимость лидов от расходов с насыщением:
R(x) = a · ln(1 + b · E(x))
Где:
- x — расходы за неделю,
- E(x) — “эффективный бюджет” с учётом adstock (хвоста прошлых недель),
- a, b — параметры насыщения,
- λ (lambda) — коэффициент хвоста (подбирается по сетке).
Дополнительно строятся:
- средняя кривая,
- консервативная нижняя оценка (по точкам ниже средней),
- верхняя оценка (по точкам выше средней) — как “оптимистичный коридор”.
Каждый рекламный юнит (машина) моделируется как случайная величина “касания” (контакты). Сумма по большому числу юнитов → применима ЦПТ (центральная предельная теорема).
- S — число активных рекламных юнитов (машин)
- X — суммарные касания за неделю (скрытая величина)
- X|S ≈ Normal(S·μ, S·σ²)
Далее лиды получаются через логарифмическую конверсию:
Y = a · ln(1 + b · X)
Из этого строятся:
- средняя кривая (матожидание),
- вероятностные коридоры ±1σ, ±2σ, ±3σ (68.27%, 95.45%, 99.73%).
Важно:
- μ фиксируется (нормировка масштаба), т.к. без наблюдения X параметр масштаба неидентифицируем;
- σ калибруется по росту разброса с увеличением S через дельта-метод.
- Загрузка датасета по имени (из папки data/)
- Сборка контекста (общий weekly DataFrame)
- Расчёт сезонного коэффициента и очистка лидов от сезонности
- Fit Flow моделей (подбор λ, a, b и нижних/верхних кривых)
- Fit Stock моделей (CLT-модель + 1/2/3σ интервалы)
- Построение графиков и вывод параметров в консоль
- main.py — простой консольный интерфейс (без параметров командной строки)
- core/ — ядро (preprocessing, context_builder, seasonality, fit_* модели)
- pipelines/ — сценарии запуска (например, forecast_channel)
- data/ — датасеты (каждый датасет отдельной папкой)
- outputs/ — картинки и результаты
-
Установите Python (см. требования ниже)
-
Установите зависимости:
pip install -r requirements.txt
-
Запустите приложение:
python main.py
Далее появится простой интерактивный режим:
- выбрать датасет из папки data/
- выбрать пайплайн (например, forecast_channel)
- получить в консоли параметры и на диске — графики (outputs/)
- Python: 3.9+ (рекомендуется 3.10)
- Зависимости — в requirements.txt
Это MVP-прототип. На маленьких датасетах (20–40 недель) возможны:
- нестабильные интервалы,
- слабая статистическая сила в хвостах,
- упрощённая сезонность.
В обмен получаем:
- интерпретируемость,
- отсутствие утечек по времени,
- робастность и консервативность.
MIT