Разреженная авторегрессия
В этом разделе мы используем NeuralProphet для работы с данными с разрешением в 5 минут (ежедневные температуры в Йосемити). Это продолжение учебного пособия Учебник 4: Авторегрессия
. В то время как четвертый учебник охватывает авторегрессию в общем, настоящий блокнот сосредоточен на разреженности.
if "google.colab" in str(get_ipython()):
# Удаляем предустановленные пакеты из Colab, чтобы избежать конфликтов
!pip uninstall -y torch notebook notebook_shim tensorflow tensorflow-datasets prophet torchaudio torchdata torchtext torchvision
!pip install git+https://github.com/ourownstory/neural_prophet.git@examples_cond_seas # может занять некоторое время
#!pip install neuralprophet # намного быстрее, но может не иметь последних обновлений/исправлений ошибок
import pandas as pd
from neuralprophet import NeuralProphet, set_log_level, df_utils
set_log_level("ERROR")
data_location = "https://raw.githubusercontent.com/ourownstory/neuralprophet-data/main/datasets/"
df = pd.read_csv(data_location + "yosemite_temps.csv")
Разрежение коэффициентов AR
Компонент авторегрессии в NeuralProphet определяется как AR-Net (статья, github). Следовательно, мы можем установить значение ar_reg
больше нуля, если хотим вызвать разреженность в коэффициентах AR.
Однако подгонка модели с несколькими компонентами и регуляризациями может быть более сложной и в некоторых случаях вам может понадобиться вручную управлять гиперпараметрами обучения.
Мы начнем с установки регуляризации на 0.1
m = NeuralProphet(
n_lags=6 * 12,
n_forecasts=3 * 12,
n_changepoints=0,
weekly_seasonality=False,
daily_seasonality=False,
learning_rate=0.01,
ar_reg=0.1,
)
m.set_plotting_backend("plotly-static")
metrics = m.fit(df, freq="5min") # validate_each_epoch=True, plot_live_loss=True
m.plot_parameters()
m = m.highlight_nth_step_ahead_of_each_forecast(1)
m.plot_parameters()
m = m.highlight_nth_step_ahead_of_each_forecast(36)
m.plot_parameters()
Дальнейшее снижение ненулевых AR-коэффициентов
Повышая значение ar_reg
, мы можем дополнительно уменьшить количество ненулевых весов. Здесь мы устанавливаем его равным 1.
m = NeuralProphet(
n_lags=6 * 12,
n_forecasts=3 * 12,
n_changepoints=0,
daily_seasonality=False,
weekly_seasonality=False,
learning_rate=0.01,
ar_reg=1,
)
m.set_plotting_backend("plotly-static")
metrics = m.fit(df, freq="5min")
m.plot_parameters()
m = m.highlight_nth_step_ahead_of_each_forecast(1)
m.plot_parameters()
m = m.highlight_nth_step_ahead_of_each_forecast(36)
m.plot_parameters()
Крайняя разреженность
Чем выше мы устанавливаем ar_reg
, тем меньше ненулевых весов учитывается моделью. Здесь мы устанавливаем его равным 10, что должно привести к одному ненулевому лагу.
Примечание: Крайние значения могут привести к нестабильности обучения.
m = NeuralProphet(
n_lags=6 * 12,
n_forecasts=3 * 12,
n_changepoints=0,
daily_seasonality=False,
weekly_seasonality=False,
learning_rate=0.01,
ar_reg=10,
)
m.set_plotting_backend("plotly-static")
metrics = m.fit(df, freq="5min")
m.plot_parameters()
m = m.highlight_nth_step_ahead_of_each_forecast(1)
m.plot_parameters()
m = m.highlight_nth_step_ahead_of_each_forecast(36)
m.plot_parameters()
Last updated