Bemind
NeuralProphet
NeuralProphet
  • NeuralProphet 1.0.0rc8 документация
  • Инструкция по началу работы
  • Новые уроки
    • Урок 1: Основы
    • Урок 2: Тренды
    • Урок 3: Сезонность
    • Урок 4: Авторегрессия
    • Урок 5: Регрессоры с запаздыванием
    • Урок 6: Будущие регрессоры
    • Урок 7: События и праздники
    • Урок 8: Неопределенность
    • Урок 9: Глобальная модель
    • Урок 10: Валидация и воспроизводимость
    • Следующие шаги
  • Руководства по функциям
    • Коллекция предсказаний
    • Тестирование и кросс-валидация
    • Визуализация прогнозов NeuralProphet
    • Глобальное локальное моделирование
    • Количественная оценка неопределенности
    • Условная сезонность
    • Мультипликативная Сезонность
    • Разреженная авторегрессия
    • Субдневные данные
    • Выбор гиперпараметров
    • Интеграция MLflow
    • Прямая визуализация во время обучения
    • Визуализация архитектуры сети
    • Прогнозирование потребности в энергии: Прогноз нагрузки для больницы в Сан-Франциско
    • Возобновляемая Энергия: Прогнозирование Солнечной Энергии
    • Прогнозирование нагрузки на энергосистему с визуализацией
  • Code Documentation
    • NeuralProphet Class
Powered by GitBook
On this page
  1. Новые уроки

Урок 4: Авторегрессия

Авторегрессия — это модель временных рядов, которая использует наблюдения из предыдущих временных шагов в качестве входных данных для уравнения регрессии, чтобы предсказать значение на следующем временном шаге.

Мы начинаем с той же модели, что и в предыдущем учебнике.

import pandas as pd
from neuralprophet import NeuralProphet, set_log_level

# Отключение сообщений журнала, кроме случаев ошибок
set_log_level("ERROR")

# Загрузка набора данных из CSV-файла с помощью pandas
df = pd.read_csv("https://github.com/ourownstory/neuralprophet-data/raw/main/kaggle-energy/datasets/tutorial01.csv")

# Модель и прогнозирование
m = NeuralProphet(
    n_changepoints=10,
    yearly_seasonality=True,
    weekly_seasonality=True,
    daily_seasonality=True,
)
m.set_plotting_backend("plotly-static")
metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)

Чтобы лучше понять, в чем заключается оставшееся несоответствие между нашей моделью и реальными данными, мы можем посмотреть на остатки. Остатки представляют собой разницу между прогнозом модели и реальными данными. Если модель идеальна, остатки должны быть равны нулю.

df_residuals = pd.DataFrame({"ds": df["ds"], "residuals": df["y"] - forecast["yhat1"]})
fig = df_residuals.plot(x="ds", y="residuals", figsize=(10, 6))

Давайте изучим, какое значение авторегрессии будет хорошим. Создайте график автокорреляции.

from statsmodels.graphics.tsaplots import plot_acf

plt = plot_acf(df_residuals["residuals"], lags=50)

Теперь мы добавляем авторегрессию в нашу модель с параметром n_lags

# Модель и прогнозирование
m = NeuralProphet(
    # Отключение точек изменения тренда
    n_changepoints=10,
    # Отключение компонентов сезонности
    yearly_seasonality=True,
    weekly_seasonality=True,
    daily_seasonality=True,
    # Добавление авторегрессии
    n_lags=10,
)
m.set_plotting_backend("matplotlib")  # Использование matplotlib из-за #1235
metrics = m.fit(df)
forecast = m.predict(df)
m.plot(forecast)

Как мы видим, модель прогнозирования с авторегрессией значительно лучше подходит к данным, чем базовая модель. Не стесняйтесь исследовать, как различное количество лагов n_lags влияет на модель.

m.plot_parameters(components=["autoregression"])
m.plot_components(forecast, components=["autoregression"])

Last updated 1 year ago