Всем привет, на связи Павел Беляев, ведущий канала Тимлидское об аналитике и автор курса «Временные ряды» 👋🏻
Предсказание будущего — штука крайне желанная для бизнеса, но коварная и полная неочевидных нюансов (как и сама жизнь). Расскажу об одной ловушке, в которую попадают даже опытные аналитики.
Задача: спрогнозировать продажи зонтов на 3 месяца вперёд.
Данные чистые, история длинная — 4 года. Аналитик строит классическую модель с сезонностью, всё красиво. Июль традиционно слабый, август чуть лучше, октябрь — пик. Модель обучена, метрики хорошие. Прогноз готов.
А потом октябрь оказался сухим, без дождей!
Ошибка прогноза — 40%. Склад затоварен, деньги заморожены, все недовольны.
Что пошло не так? Модель всё делала правильно — она честно выучила исторический паттерн. Проблема в другом: сезонность продаж зонтов — это не календарная сезонность, это сезонность осадков.
А осадки и календарь связаны лишь статистически, но не причинно. Когда погода ведёт себя «по учебнику» — модель работает. Когда нет — рассыпается.
Как это чинится?
Добавляем внешний регрессор — прогноз осадков на горизонт планирования. В Prophet это параметр add_regressor(), в SARIMA — экзогенные переменные (SARIMAX), в градиентном бустинге — просто ещё один признак.
Но здесь начинается самое интересное. Нельзя просто взять данные об осадках и скормить их модели. Нужно ответить на три вопроса:
➡️ С каким лагом осадки влияют на продажи? Люди покупают зонт не в ливень, а накануне;
➡️ Как агрегировать — суммарные осадки за неделю или количество дождливых дней?
➡️ Что делать на горизонте прогноза, где у нас уже не факт, а прогноз погоды — то есть переменная с собственной ошибкой?
Последний пункт особенно коварен. Вы строите прогноз на основе прогноза. Ошибки перемножаются. Это нужно явно учитывать в доверительных интервалах — иначе вы будете уверены в числе, которое на самом деле очень нечёткое.
Таких внешних факторов в реальных задачах — десятки. Курс валют, праздники со смещёнными датами, школьные каникулы, спортивные события, промоакции конкурентов. Каждый из них потенциально ломает вашу красивую сезонную модель.
Хороший аналитик временных рядов — это тот, кто умеет думать о природе данных и понимает, какие силы на самом деле двигают ряд. Но начать надо всё же с алгоритма, научиться его применять, тогда и опыт подтянется!
⭐️ Курс «Временные ряды» стартует уже в пятницу, 15 мая, присоединяйтесь: simulative.ru/time-series
📈 Симулейтив | 📱 ВК | 📱 YouTube | 📱 Канал о DS
