Реализация прогнозирования временных рядов (Time Series Forecasting)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Реализация прогнозирования временных рядов (Time Series Forecasting)
Средняя
~1-2 недели
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Реализация прогнозирования временных рядов (Time Series Forecasting)

Временные ряды — данные с временной меткой. Это охватывает продажи, потребление энергии, биржевые котировки, IoT-датчики, трафик. Правильный выбор модели и методологии критичен: неверное обращение с temporal зависимостями приводит к data leakage и ложно-оптимистичным результатам на backtest.

Классификация временных рядов

Перед выбором метода — анализ свойств ряда:

Стационарность: ADF-тест (Augmented Dickey-Fuller). Нестационарные ряды требуют дифференцирования или специальных методов.

Сезонность: ACF/PACF анализ. Одиночная (недельная) или множественная (недельная + годовая) сезонность влияет на выбор модели.

Прерывистость (intermittency): ADI (Average Demand Interval) > 1.32 — специальные методы (Croston, IMAPA).

Нелинейность: тест Terasvirta / BDS-тест. Линейные модели (ARIMA) неадекватны при сильной нелинейности.

Иерархия методов

Метод Применение Плюсы Ограничения
Naive / Seasonal Naive Baseline, intermittent Быстрый, интерпретируемый Низкая точность
ETS (Exponential Smoothing) Одиночная сезонность Автоматический, хорошо работает Множественная сезонность
SARIMA Статистика, одиночная сезонность Теория, confidence intervals Медленный, одна сезонность
Prophet Бизнес-данные с праздниками Простота, интерпретируемость Не лучший для сложных паттернов
LightGBM с лагами Много внешних факторов Высокая точность, фичи Требует feature engineering
N-BEATS / N-HiTS Чистый TS без внешних фич SOTA на M4/M5 Черный ящик
TFT Много рядов + known covariates SOTA для ансамблей Сложность, GPU
TimesGPT / TimesFM Foundation model, zero-shot Быстрый старт Дорого, меньше контроля

Правильный бэктестинг

Проблема: нельзя использовать стандартный train/test split для временных рядов — нарушается temporal ordering.

Walk-Forward Validation:

|---Train---| Test |
|----Train----|   Test   |
|-----Train-----|     Test     |
Average metrics across all windows

Размер тестового окна = прогнозный горизонт. Шаг сдвига = горизонт / 2 или = горизонт (без overlap).

Data leakage sources:

  • Использование будущих данных в scaling (fit scaler на всём датасете)
  • Target encoding с будущими значениями
  • External features с будущей информацией (known future covariates vs. past covariates)

Feature Engineering для ML-подхода

Временны́е features:

df['hour'] = df.index.hour
df['day_of_week'] = df.index.dayofweek
df['week_of_year'] = df.index.isocalendar().week
df['month'] = df.index.month
df['is_weekend'] = df['day_of_week'].isin([5, 6]).astype(int)
# Cyclical encoding
df['sin_hour'] = np.sin(2 * np.pi * df['hour'] / 24)
df['cos_hour'] = np.cos(2 * np.pi * df['hour'] / 24)

Lag features: t-1, t-7, t-14, t-28 для дневных данных; t-1, t-24, t-168 для почасовых.

Rolling statistics: среднее, std, min, max за 7/28/90 дней. Разности: (t-1) - (t-7) для захвата тренда.

Probabilistic Forecasting

Точечный прогноз без неопределённости — недостаточно для бизнес-решений. Квантильные прогнозы:

  • Quantile Regression: LightGBM с objective='quantile', alpha=0.1/0.5/0.9
  • Conformal Prediction: теоретически обоснованные интервалы, не предполагают распределение
  • Monte Carlo Dropout: в нейросетях — ensemble через dropout в inference
  • N-HiTS с квантилями: нативная поддержка в библиотеке neuralforecast

Production Pipeline

# Пример с Nixtla / statsforecast
from statsforecast import StatsForecast
from statsforecast.models import AutoARIMA, AutoETS, AutoTheta

models = [AutoARIMA(season_length=7), AutoETS(season_length=7), AutoTheta()]
sf = StatsForecast(models=models, freq='D', n_jobs=-1)
sf.fit(train_df)
forecasts = sf.predict(h=28, level=[80, 95])

MLflow tracking: каждый эксперимент — версия данных, гиперпараметры, метрики, артефакт модели.

Scheduling: Airflow DAG для ежедневного переобучения и публикации прогнозов в Data Warehouse.

Мониторинг: Evidently для отслеживания data drift входных фич и prediction drift выхода модели.

Сроки: статистические baseline модели (AutoARIMA, Prophet) — 2-3 недели. ML-система с walk-forward validation, квантильными прогнозами и production pipeline — 8-12 недель.