Data Science

Time Series Analysis

Walmart хранит данные о продажах каждого товара в каждом магазине за 10 лет - 400 миллионов строк. За три дня до урагана продажи Pop-Tarts вырастают в 7 раз. Предсказать это заранее - значит правильно заполнить полки и не потерять 50 миллионов долларов выручки. Именно это делают модели временных рядов в реальном масштабе.

  • **Amazon Forecast** использует DeepAR (глобальная LSTM-модель) для прогнозирования спроса на 30 млн продуктов - точность выросла на 36% по сравнению с ARIMA
  • **Uber** прогнозирует потребность в водителях по 30-минутным слотам для каждого района города через Prophet + custom seasonality
  • **ЭКГ мониторинг**: аномалии в сердечном ритме обнаруживаются через анализ временных рядов - основа Apple Watch ECG feature

ARIMA

В 1970 году Бокс и Дженкинс опубликовали книгу, изменившую прогнозирование. Их модель ARIMA (AutoRegressive Integrated Moving Average) описывает временной ряд тремя параметрами: **AR(p)** - зависимость от p предыдущих значений, **I(d)** - порядок дифференцирования для достижения стационарности, **MA(q)** - скользящее среднее q предыдущих ошибок прогноза. Amazon использует ARIMA для краткосрочного прогнозирования спроса на 30 млн SKU ежедневно.

Ключевые понятия: стационарность (среднее и дисперсия не меняются со временем - проверяется тестом Дики-Фуллера), ACF/PACF (автокорреляция/частичная автокорреляция - для выбора p и q), AIC/BIC (критерии выбора модели). Подбор параметров: auto_arima из pmdarima автоматически перебирает комбинации (p,d,q) и выбирает по AIC. Ограничение ARIMA: линейный метод, плохо улавливает сложные нелинейные паттерны и множественную сезонность.

Что означает параметр 'd' в ARIMA(p,d,q)?

Facebook Prophet

В 2017 году Facebook открыл Prophet - модель временных рядов, которую аналитик без статистического образования может применить за 10 строк кода. Секрет: вместо ARIMA-параметров Prophet декомпозирует ряд на **тренд** (кусочно-линейный или логистический рост), **сезонность** (Фурье-ряды для годовых, недельных, дневных паттернов) и **праздники** (пользовательские события). Алгоритм устойчив к пропущенным данным и автоматически обнаруживает точки смены тренда.

Prophet модель: y(t) = trend(t) + seasonality(t) + holidays(t) + error. Trend: линейный (с changepoints) или логистический (для ограниченного роста). Сезонность: Фурье-ряды до порядка N (годовая: N=10, недельная: N=3). Changepoints: автоматически обнаруживаемые точки изменения скорости роста (по умолчанию 25 точек в 80% ряда). Байесовский подход через Stan (MCMC или MAP) дает неопределённость прогноза бесплатно.

Как Prophet обрабатывает автоматически обнаруженные changepoints (точки смены тренда)?

Сезонность и декомпозиция

Продажи мороженого растут летом. Трафик сайта падает в воскресенье. Биение сердца повторяется каждые 0.8 секунды. Все это - **сезонность**: предсказуемые повторяющиеся паттерны с фиксированным периодом. Классическая декомпозиция разделяет ряд на три компоненты: тренд (T), сезонность (S) и остаток (R). Аддитивная модель: y = T + S + R (сезонная амплитуда постоянна). Мультипликативная: y = T * S * R (амплитуда растёт с трендом - типично для бизнес-данных).

Методы декомпозиции: (1) STL (Seasonal and Trend decomposition using Loess) - устойчив к выбросам, обрабатывает несколько сезонностей, рекомендуется по умолчанию; (2) X-13ARIMA-SEATS - стандарт правительственных статистических агентств; (3) MSTL (Multiple Seasonal-Trend decomposition using Loess) - для ежечасных данных с суточной и недельной сезонностью одновременно. statsmodels содержит seasonal_decompose и STL. Период сезонности: 12 (месяцы), 7 (дни недели), 24 (часы), 52 (недели).

Когда следует использовать мультипликативную модель декомпозиции вместо аддитивной?

Прогнозирование и оценка качества

Прогнозирование временных рядов - не просто подбор модели. Ключевая ошибка: оценивать качество на тех же данных, на которых обучалась модель. Из-за автокорреляции стандартная кросс-валидация дает оптимистичные оценки. Правильный подход: **walk-forward validation** (скользящее окно обучения/тестирования). Модель всегда обучается на прошлом и тестируется на будущем, как в реальном применении.

Метрики качества прогнозирования: MAE (средняя абсолютная ошибка, интерпретируемая), RMSE (штрафует большие ошибки сильнее), MAPE (процентная ошибка, нельзя применять при нулевых значениях), SMAPE (симметричная MAPE, диапазон 0-200%). Baseline-модели для сравнения: Naive (прогноз = последнее наблюдение), Seasonal Naive (прогноз = значение предыдущего периода), Simple Exponential Smoothing. Если сложная модель не бьёт baseline - проблема в данных или feature engineering.

Чем сложнее модель, тем лучше прогноз временного ряда

Простые модели (Exponential Smoothing, ARIMA) часто превосходят сложные нейросети на коротких рядах с выраженной сезонностью

Временные ряды обычно коротки (несколько сотен точек), сезонность легко учитывается параметрически. Нейросети (LSTM, Transformer) выигрывают при глобальном обучении на тысячах рядов одновременно (Amazon DeepAR, Google N-BEATS).

Почему стандартная k-fold кросс-валидация некорректна для временных рядов?

Ключевые идеи

  • **ARIMA(p,d,q)** - статистическая рабочая лошадка: AR описывает зависимость от прошлых значений, I дифференцирует до стационарности, MA учитывает прошлые ошибки прогноза
  • **Prophet** декомпозирует ряд на тренд + сезонность + праздники через Фурье-ряды и Bayesian changepoint detection - интерпретируем и устойчив к пропускам
  • **Walk-forward validation** - обязательный метод оценки: модель всегда обучается на прошлом и тестируется на будущем, как в реальном деплое

Связанные темы

Анализ временных рядов пересекается с несколькими областями Data Science:

  • Ensemble Methods — Gradient boosting (LightGBM, XGBoost) применяется к временным рядам через feature engineering: lag-признаки, скользящие средние, сезонные индикаторы
  • Causal Inference — Causal Impact (Google) использует Bayesian структурные временные ряды для оценки причинного эффекта вмешательств (запуск рекламы, изменение продукта)

Вопросы для размышления

  • Если два разных аналитика строят ARIMA для одного ряда и выбирают разные (p,d,q), кто прав? Как объективно сравнить модели?
  • Prophet автоматически обнаруживает changepoints. Что произойдёт, если в обучающих данных был единичный аномальный месяц из-за пандемии?
  • Walk-forward validation всегда использует всё прошлое для обучения. Когда данные трёхлетней давности могут навредить качеству прогноза?

Связанные уроки

  • stat-13-time-series
Time Series Analysis

0

1

Войти