По умолчанию NeuralProphet адаптирует аддитивные сезонности, что означает, что эффект сезонности добавляется к тренду для получения прогноза. Этот временной ряд количества пассажиров авиалиний является примером, когда аддитивная сезонность не работает:
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")
Этот временной ряд имеет явно выраженный годовой цикл, однако сезонность в прогнозе на начальном этапе временного ряда слишком велика, а в его конце - слишком мала. В данном временном ряде сезонность не является постоянным аддитивным фактором, как предполагается в NeuralProphet, а увеличивается вместе с трендом. Это мультипликативная сезонность.
NeuralProphet может моделировать мультипликативную сезонность, если установить в аргументах ввода
m = NeuralProphet(seasonality_mode="multiplicative")
metrics = m.fit(df, freq="MS")
m.set_plotting_backend("plotly-static")
Фигура компонентов теперь будет показывать сезонность как процент от тренда:
m.plot_components(forecast)
Обратите внимание, что сезонность корректируется только на основе данных, полученных в начале месяца. Следовательно, отображаемые значения сезонности в промежутках между месяцами могут принимать случайные значения.
Установка seasonality_mode="multiplicative" позволит моделировать все сезонные колебания как мультипликативные, включая пользовательские сезонности, добавленные с помощью add_seasonality.