Модели прогноза временных рядов
«Какую модель возьмёшь для прогноза» - вопрос про инженерную трезвость: лестница от наивного к сложному, и подниматься стоит, только пока растёт бэктест. Нейронка первой строчкой - красный флаг.
// Вторая проверка - знаешь ли ты, что деревья не экстраполируют тренд. На этом горят прогнозы растущих бизнесов.
Лестница моделей
Порядок подъёма: наивные → экспоненциальное сглаживание (ETS/Holt-Winters) → SARIMA → бустинг с лагами → нейронки и foundation-модели. Каждая ступень оправдывается приростом метрики бэктеста, не модой.
ETS (error, trend, seasonality) - уровень, тренд и сезонность с экспоненциальным забыванием: сильный дешёвый бейзлайн для одиночных стабильных рядов. SARIMA точна на них же, но требует стационарности и подбора порядков, и плохо масштабируется на тысячи рядов.
// Prophet - аддитивная модель тренда/сезонностей/праздников: удобен интерпретируемостью и работой с праздниками, но не серебряная пуля по точности.
- ETS / Holt-Winters
- экспоненциальное сглаживание уровня/тренда/сезонности
Бустинг с лагами и его слепое пятно
Градиентный бустинг по табличке с лагами и календарём - рабочая лошадка ритейла: одна глобальная модель на тысячи рядов, серии подкрепляют друг друга, фичи любые.
Слепое пятно - экстраполяция: дерево не предскажет уровень выше видевшегося в трейне. Ряд с устойчивым трендом упрётся в потолок обучающего диапазона.
// Лечение: снять тренд (прогнозировать остаток от него или разности) либо подать уровень/тренд фичей - комбинация «линейный тренд + бустинг на остатке» живёт во многих прод-системах.
- экстраполяция
- деревья не выходят за диапазон трейна - тренд снимают
Горизонты и квантили
Мультигоризонтный прогноз: рекурсивная стратегия - одна модель, свои прогнозы подаются на вход, ошибка копится с горизонтом; прямая - отдельная модель на каждый горизонт, дороже, но стабильнее на длинных.
Для запасов и планирования вероятностный прогноз ценнее точки: p50 - план, p90 - страховой запас. Цена недопоставки и перезаказа несимметрична - средняя точка не отвечает на бизнес-вопрос.
// Квантильный лосс в бустинге делает это из коробки: обучаешь модели на p50 и p90 - получаешь коридор.
- рекурсивная / прямая стратегия
- свои прогнозы как вход vs модель на горизонт
- квантильный прогноз
- p50/p90 вместо точки - под несимметричную цену ошибки
Как отвечать: «Какую модель возьмёшь для прогноза спроса на тысячи SKU?»
Снизу вверх. Наивные и ETS - обязательная планка, дальше глобальный бустинг с лагами и календарём: одна модель на все SKU, редкие ряды подкрепляются частыми. Тренд снимаю или подаю фичей - деревья не экстраполируют за диапазон трейна, растущие товары иначе упрутся в потолок. Прогноз - квантильный: p50 для плана, p90 для страхового запаса, потому что цена пустой полки и списаний разная. Горизонты - прямой стратегией на ключевые, чтобы ошибка не копилась рекурсией. Каждую ступень сложности оправдываю приростом на rolling-бэктесте - если бустинг не бьёт ETS, остаюсь на ETS.
Лестница с планкой, оба фирменных подводных камня (экстраполяция, симметрия цены) и трезвый критерий остановки.
На чём валят
- −Начать с нейронки, не побив наивный прогноз и ETS.
- −Бустинг на ряду с трендом без снятия тренда - потолок обучающего диапазона.
- −Рекурсивный прогноз на длинный горизонт без оценки накопления ошибки.
- −Планировать запасы по средней точке - цена недопоставки и перезаказа несимметрична.
Проверьте себя
Пять вопросов из банка по этой подтеме. Всего их 15, остальные разбираются в тренажёре.
- Когда переход на DL (LSTM, N-BEATS, temporal fusion) для прогноза реально оправдан против бустинга?A)Глубокие сети точнее бустинга на большинстве временных рядов и объёмов данныхB)Нет: нейросети технически неприменимы к задаче прогнозирования временных рядовC)Много длинных рядов с общими паттернами, сложная сезонность и длинные зависимости; на малых данных выигрывает бустинг/классикаD)DL оправдан ровно тогда, когда в ряду меньше сотни точек, потому что на коротких рядах сети переобучаются медленнее
показать ответ и разбор
+C)Много длинных рядов с общими паттернами, сложная сезонность и длинные зависимости; на малых данных выигрывает бустинг/классика// разбор: DL для рядов выстреливает, когда есть масштаб и общая структура: тысячи связанных рядов, длинные зависимости, сложная множественная сезонность, много экзогенных входов (модели типа TFT это используют). На небольших данных и одиночных рядах бустинг и классические модели обычно точнее, проще и дешевле. Универсального превосходства DL нет — это вопрос объёма и структуры данных.
- Что делает экспоненциальное сглаживание (Holt-Winters)?A)Прогнозирует, взвешивая прошлое экспоненциально убывающими весами; версии учитывают уровень, тренд и сезонностьB)Обучает глубокую нейросеть на ряде, подбирая её веса градиентным спуском по множеству эпох обученияC)Строит прогноз как простое среднее всех прошлых значений ряда, никак не учитывая их давность во времениD)Раскладывает ряд на частоты Фурье и предсказывает каждую отдельную гармонику независимо от прочих
показать ответ и разбор
+A)Прогнозирует, взвешивая прошлое экспоненциально убывающими весами; версии учитывают уровень, тренд и сезонность// разбор: Экспоненциальное сглаживание строит прогноз как взвешенную сумму прошлых наблюдений, где свежие весят больше (веса убывают экспоненциально). Holt добавляет компоненту тренда, Holt-Winters — ещё и сезонную (аддитивную или мультипликативную). Это простой, быстрый и на удивление сильный бейзлайн для рядов с трендом и сезонностью. Это не нейросеть, не простое среднее и не Фурье-разложение.
- Ряд с недельной сезонностью подали в обычную ARIMA, сезонность осталась в остатках. Что взять?A)Просто увеличить порядок обычного дифференцирования d, пока недельная сезонность не исчезнет из ряда сама собойB)Ничего менять не нужно: ARIMA по построению сама учитывает сезонность ряда автоматическиC)Вручную удалить все сезонные пики из ряда перед обучением обычной несезонной модели ARIMA на нёмD)SARIMA: сезонные члены (P,D,Q)_s с сезонным дифференцированием на лаг периода недели
показать ответ и разбор
+D)SARIMA: сезонные члены (P,D,Q)_s с сезонным дифференцированием на лаг периода недели// разбор: Обычная ARIMA моделирует только несезонную зависимость, поэтому недельная сезонность оседает в остатках (сезонные пики ACF). SARIMA добавляет сезонные компоненты (P,D,Q) с периодом s (здесь 7) и сезонное дифференцирование на лаг s, снимающее сезонность напрямую. Наращивать обычное d вместо сезонного неверно (переусердствуешь, а сезон останется), ручное вырезание пиков ломает структуру.
- Когда Prophet — уместный выбор для прогноза?A)Для сверхвысокочастотных рядов (биржевые тики) с миллисекундной гранулярностью и полным отсутствием сезонностиB)Когда данных крайне мало — якобы именно Prophet работает на десятке-другом точек рядаC)Бизнес-ряды с сильной сезонностью, праздниками и пропусками: аддитивная модель тренд+сезонность+события, настраиваемая аналитикомD)Для рядов без сезонности и тренда — Prophet моделирует один лишь чистый шум
показать ответ и разбор
+C)Бизнес-ряды с сильной сезонностью, праздниками и пропусками: аддитивная модель тренд+сезонность+события, настраиваемая аналитиком// разбор: Prophet — аддитивная модель тренд + (множественная) сезонность + эффекты праздников, устойчивая к пропускам и выбросам и настраиваемая интерпретируемыми ручками. Удобна на бизнес-рядах уровня день/неделя с выраженной сезонностью и календарными событиями, когда нужен быстрый разумный прогноз без тонкого тюнинга. Для тиковых данных и задач с максимальной точностью чаще берут бустинг, DL или ARIMA.
- Спрос на запчасть — редкие ненулевые всплески среди множества нулей. Чем плох прогноз среднего и что берут?A)Обычная модель идеальна для таких рядов; никакие специальные методы для прерывистого спроса тут не нужныB)Прерывистый спрос: усреднение размазывает редкие продажи в дробное «около нуля»; берут Croston и его вариантыC)Такие ряды сложно прогнозировать — остаётся держать большой запас на складе про запасD)Нужно просто выкинуть все нулевые дни из ряда и прогнозировать оставшиеся ненулевые продажи как обычный ряд
показать ответ и разбор
+B)Прерывистый спрос: усреднение размазывает редкие продажи в дробное «около нуля»; берут Croston и его варианты// разбор: При прерывистом (intermittent) спросе большинство периодов нулевые, продажи — редкие всплески. Модель, минимизирующая MSE, выдаёт сглаженное дробное значение около нуля — бесполезное для планирования запаса и обманчивое по MAPE. Специальные методы (Croston, SBA, TSB) моделируют раздельно размер всплеска и интервал между ними. Выкидывать нули нельзя — теряется информация о частоте спроса.
дальше
Теорию прочитали. Навык ставится повторением
В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.