По умолчанию NeuralProphet адаптирует аддитивные сезонности, что означает, что эффект сезонности добавляется к тренду для получения прогноза. Этот временной ряд количества пассажиров авиалиний является примером, когда аддитивная сезонность не работает:
if"google.colab"instr(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 pdfrom neuralprophet import NeuralProphet, set_log_level, df_utilsset_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.