Глобальное локальное моделирование
При использовании одной модели прогнозирования с общими весами на наборе данных, состоящем из множества временных рядов, можно достичь создания так называемой глобальной модели. Она особенно полезна в случаях, когда один временной ряд может не отражать всю динамику временных рядов. Кроме того, глобальные модели обеспечивают лучшую обобщенность и экономию размера модели.
Однако в случаях, когда многие временные ряды имеют только некоторые общие черты поведения, более подходящей может быть модель глобально-локального типа. В такой модели используется одна модель с общими весами для захвата общих поведений по всем временным рядам, в то время как некоторые компоненты моделируются отдельно для каждого временного ряда.
В этом руководстве мы продемонстрируем пример глобального локального моделирования, отдельно моделируя компоненты тренда и сезонности для каждого временного ряда в наборе данных почасовых нагрузок региона ERCOT.
Сначала загружаем данные:
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 # может занять некоторое время
#!pip install neuralprophet # намного быстрее, но может не иметь последних обновлений/исправлений ошибок
import pandas as pd
from neuralprophet import NeuralProphet, set_log_level
from neuralprophet import set_random_seed
import numpy as np
set_random_seed(10)
set_log_level("ERROR", "INFO")
data_location = "https://raw.githubusercontent.com/ourownstory/neuralprophet-data/main/datasets/"
df_ercot = pd.read_csv(data_location + "multivariate/load_ercot_regions.csv")
df_ercot.head()0
2004-01-01 01:00:00
7225.09
877.79
1044.89
745.79
7124.21
1660.45
3639.12
654.61
1
2004-01-01 02:00:00
6994.25
850.75
1032.04
721.34
6854.58
1603.52
3495.16
639.88
2
2004-01-01 03:00:00
6717.42
831.63
1021.10
699.70
6639.48
1527.99
3322.70
623.42
3
2004-01-01 04:00:00
6554.27
823.56
1015.41
691.84
6492.39
1473.89
3201.72
613.49
4
2004-01-01 05:00:00
6511.19
823.38
1009.74
686.76
6452.26
1462.76
3163.74
613.32
Извлекаем названия регионов, которые позже будут использованы при создании модели.
Глобальные модели можно активировать, когда входные данные df функции имеют дополнительную колонку «ID», которая идентифицирует различные временные ряды (помимо типичной колонки «ds», содержащей временные метки, и колонки «y», содержащей наблюдаемые значения временного ряда). В нашем примере мы выбираем данные за трехлетний интервал (с 2004 по 2007 год).
Мы изменим тенденцию для СЕВЕРА и сезонность для ПОБЕРЕЖЬЯ.


Глобальное моделирование
Когда входными данными для функции split_df является pd.DataFrame со столбцом ID, тренировочные и валидационные данные предоставляются в аналогичном формате. Для глобальных моделей входные данные обычно разделяются в соответствии с долей времени, охватывающей все временные ряды (по умолчанию, когда есть более одного ID и когда local_split=False). Если пользователь хочет разделить каждый временной ряд локально, параметр local_split должен быть установлен в значение True. В этом примере мы разделим наши данные на тренировочные и тестовые (с 33% долей тестовой выборки - 2 года на обучение и 1 год на тестирование).
После создания объекта NeuralProphet, модель может быть создана путем вызова функции fit
Убедитесь, что вы предоставляете данные, идентифицированные с ключами, связанными с соответствующими временными рядами поездов. Таким образом, подходящие параметры нормализации данных используются в процедурах после подгонки (т.е.,predict, test).
Мы сейчас построим прогнозируемые временные ряды и параметры для:
NORTH: С корректировкой тренда
COAST: С корректировкой сезонности
EAST: Без изменений к оригиналу
North
South
East
Metrics
0
0.235438
0.267084
0.123413
0.0
Локальное моделирование тренда и сезонности
Мы повторим вышеописанный процесс, но для локального моделирования тренда и сезонности.
North
Coast
East
Metric
0
0.18777
0.220333
0.084803
0.0
Заключение
Сравнивая локально-глобальную модель и глобальную модель, мы достигли более низкой ошибки с локально-глобальной моделью.
Last updated