Реалізація прогнозування часових рядів (Time Series Forecasting)

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Реалізація прогнозування часових рядів (Time Series Forecasting)
Середній
~1-2 тижні
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Реалізація прогнозування часових рядів (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     |
Усереднення метрик по всіх вікнах

Розмір тестового вікна = горизонт прогнозу. Крок зсуву = горизонт / 2 або = горизонт (без overlap).

Джерела Data Leakage:

  • Використання майбутніх даних у scaling (fit scaler на всьому датасеті)
  • Target encoding з майбутніми значеннями
  • External features з майбутною інформацією (known future covariates vs. past covariates)

Feature Engineering для ML-підходу

Часові фічи:

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: у нейромережах — ансамбль через 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 тижнів.