Навчання моделі передбачення часових рядів (Prophet, NeuralProphet, TimesFM)

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

Напрямки 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

Обучення моделі прогнозування часових рядів (Prophet, NeuralProphet, TimesFM)

Prophet, NeuralProphet та TimesFM — три покоління інструментів для прогнозування часових рядів з різними компромісами між простотою, гнучкістю та точністю. Правильний вибір залежить від даних, горизонту та вимог до інтерпретуємості.

Prophet: декомпозиційна модель

Meta Prophet (2017) — адитивна модель:

y(t) = trend(t) + seasonality(t) + holidays(t) + ε(t)

Тренд: кусково-лінійний або логістичний ріст. Changepoints — автоматичне виявлення точок зміни тренду через L1-регуляризацію.

Сезонність: Ряди Фур'є:

  • Річна: N=10 (default)
  • Тижнева: N=3
  • Користувальницька: будь-який період

Навчання та тюнінг:

from prophet import Prophet
import pandas as pd

m = Prophet(
    changepoint_prior_scale=0.05,   # гнучкість тренду
    seasonality_prior_scale=10.0,   # гнучкість сезонності
    holidays_prior_scale=10.0,
    seasonality_mode='multiplicative'  # для зростаючих даних
)
m.add_country_holidays(country_name='UA')
m.add_seasonality(name='monthly', period=30.5, fourier_order=5)
m.fit(df)  # df з колонками ds, y

Параметри для тюнінгу:

  • changepoint_prior_scale: 0.001-0.5, контролює overfitting тренду
  • seasonality_mode: 'additive' для стаціонарних, 'multiplicative' для зростаючих рядів
  • fourier_order: більше = гнучкіша сезонність = ризик переобучення

Cross-валідація Prophet:

from prophet.diagnostics import cross_validation, performance_metrics
df_cv = cross_validation(m, initial='730 days', period='180 days', horizon='365 days')
df_p = performance_metrics(df_cv)

NeuralProphet

NeuralProphet (2021) = Prophet + нейросетеві компоненти:

  • Авторегресивний компонент (AR-Net): захоплює нелінійні лагові залежності
  • Lagged regressors: нелінійний вплив зовнішніх факторів
  • Навчання через PyTorch, значно швидше за MCMC-Prophet
from neuralprophet import NeuralProphet

m = NeuralProphet(
    n_forecasts=7,        # горизонт прогнозу
    n_lags=14,            # число лагів для AR
    seasonality_mode='auto',
    learning_rate=0.01
)
m = m.add_country_holidays('UA')
metrics = m.fit(df, freq='D', validation_df=df_val)

Коли NeuralProphet кращий за Prophet:

  • Існують нелінійні лагові залежності
  • Потрібні multiple-step ahead прогнози з конкретними кроками
  • Доступні lagged external regressors (погода з затримкою, продажи конкурентів)

TimesFM: Foundation Model від Google

TimesFM (2024) — pretrained foundation model для zero-shot прогнозування:

import timesfm

tfm = timesfm.TimesFm(
    context_len=512,
    horizon_len=128,
    input_patch_len=32,
    output_patch_len=128,
    num_layers=20,
    model_dims=1280,
    backend='gpu'
)
tfm.load_from_checkpoint(repo_id="google/timesfm-1.0-200m")

# Zero-shot inference
forecast_input = [np.array(historical_data)]
frequency_input = [0]  # 0=high freq, 1=low freq
point_forecast, experimental_quantile_forecast = tfm.forecast(
    forecast_input, freq=frequency_input
)

Переваги TimesFM:

  • Zero-shot: не вимагає навчання на ваших даних
  • Швидкий старт: перший прогноз за хвилини
  • Сильний результат на більшості бізнес-задач з коробки

Обмеження:

  • Не враховує known future covariates (свята, промо) без fine-tuning
  • Обмежена інтерпретуємість
  • Потребує значного контексту (> 500 точок оптимально)

Порівняльний вибір

Критерій Prophet NeuralProphet TimesFM
Потрібна інтерпретуємість ✓✓
Є known future events ✓✓ ✓✓
Мало даних (< 2 років) ✓✓
Нелінійні лаги важливі ✓✓
Потрібна вища точність ✓✓
Багато рядів (>1000) ✓✓

Практика навчання та валідації

Pipeline навчання (приклад з Prophet):

  1. Підготовка даних: ресемплинг до потрібної частоти, обробка пропусків (interpolation / forward fill)
  2. Аналіз: ACF/PACF, decompose, holiday analysis
  3. Baseline: Seasonal Naive (прогноз = значення рік тому)
  4. Prophet fit з default параметрами, cross-validation
  5. Hyperparameter search: Optuna / grid search по 4-6 параметрам
  6. Ансамблювання з конкурентом (ETS або NeuralProphet)
  7. Productionization: Airflow DAG, MLflow tracking, API endpoint

Метрики порівняння: SMAPE, MASE (Mean Absolute Scaled Error — нормирована на Seasonal Naive), Winkler Score для інтервальних прогнозів.

Строки: тюнінг та навчання Prophet/NeuralProphet для одного ряду з cross-validation — 1-2 тижні. Production pipeline з моніторингом та авто-переквалікуванням — 4-6 тижнів.