Глобальное локальное моделирование

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

Однако в случаях, когда многие временные ряды имеют только некоторые общие черты поведения, более подходящей может быть модель глобально-локального типа. В такой модели используется одна модель с общими весами для захвата общих поведений по всем временным рядам, в то время как некоторые компоненты моделируются отдельно для каждого временного ряда.

В этом руководстве мы продемонстрируем пример глобального локального моделирования, отдельно моделируя компоненты тренда и сезонности для каждого временного ряда в наборе данных почасовых нагрузок региона 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()
ds
COAST
EAST
FAR_WEST
NORTH
NORTH_C
SOUTHERN
SOUTH_C
WEST

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

MAE_val
RMSE_val
Loss_test
RegLoss_test

0

0.235438

0.267084

0.123413

0.0

Локальное моделирование тренда и сезонности

Мы повторим вышеописанный процесс, но для локального моделирования тренда и сезонности.

North

Coast

East

Metric

MAE_val
RMSE_val
Loss_test
RegLoss_test

0

0.18777

0.220333

0.084803

0.0

Заключение

Сравнивая локально-глобальную модель и глобальную модель, мы достигли более низкой ошибки с локально-глобальной моделью.

Last updated