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

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Обучение модели предсказания временных рядов (Prophet, NeuralProphet, TimesFM)
Средняя
~5 рабочих дней
Часто задаваемые вопросы
Направления 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

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

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

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

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

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

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

Seasonality: Ряды Фурье:

  • Годовая: 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='RU')
m.add_seasonality(name='monthly', period=30.5, fourier_order=5)
m.fit(df)  # df с колонками ds, y

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

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

Кросс-валидация 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('RU')
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 params, кросс-валидация
  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 для одного ряда с кросс-валидацией — 1-2 недели. Production pipeline с мониторингом и автопереобучением — 4-6 недель.