Тестирование и кросс-валидация

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

set_log_level("ERROR")

Загрузить данные

data_location = "https://raw.githubusercontent.com/ourownstory/neuralprophet-data/main/datasets/"
df = pd.read_csv(data_location + "air_passengers.csv")

1.Базовый уровень: обучение и тестирование модели.

Сначала мы покажем, как подготовить модель и оценить ее на отложенной выборке.

1.1 Оценка Train-Test

m = NeuralProphet(seasonality_mode="multiplicative", learning_rate=0.1)
m.set_plotting_backend("plotly-static")

df = pd.read_csv(data_location + "air_passengers.csv")
df_train, df_test = m.split_df(df=df, freq="MS", valid_p=0.2)

metrics_train = m.fit(df=df_train, freq="MS")
metrics_test = m.test(df=df_test)

metrics_test
MAE_val
RMSE_val
Loss_test
RegLoss_test

0

18.907013

23.143999

0.002765

0.0

1.2 Прогнозирование будущего

Перед тем как делать какие-либо прогнозы, переобучите модель на всех доступных данных, иначе вы значительно снизите точность прогнозирования!

1.3 Визуализируйте обучение

Если вы установили версию NeuralProphet с [live], вы можете дополнительно визуализировать ваш процесс обучения и определить любое переобучение, анализируя каждую эпоху.

Примечание: Перед тем как делать какие-либо прогнозы, сначала переобучите модель, используя все данные.

MAE_val
RMSE_val
Loss_val
RegLoss_val
epoch
MAE
RMSE
Loss
RegLoss

491

19.501102

23.570879

0.002867

0.0

491

6.099627

7.32115

0.000215

0.0

2. Перекрестная проверка временных рядов

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

  • Во время первой части мы обучаем модель на части данных, а затем оцениваем ее производительность на следующем наборе данных, который определяется параметром fold_pct (процент образцов в каждой части).

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

  • Этот процесс повторяется до последней части, где данные оценки достигают конца доступных данных. По сути, точка прогноза «перекатывается» вперед по мере перехода от одной части к следующей.

Примечание: Перед тем, как делать какие-либо прогнозы, переобучите модель на всех доступных данных, иначе вы значительно снизите точность прогнозов!

MAE_val
RMSE_val

mean

22.929840

27.337904

std

6.081756

5.727830

min

16.587053

20.347235

max

31.630749

34.319324

3. Расширенный уровень: трехфазное обучение, процедура проверки и тестирования.

Наконец, в разделах 3.1 и 3.2 мы выполним трехчастное разделение данных для корректного обучения, валидации и тестирования вашей модели. Такая настройка используется, если вы не хотите исказить оценку производительности за счет ручной настройки гиперпараметров. Однако это не является обычным при работе с временными рядами, если только вы не работаете в академической сфере. Кросс-валидация обычно более чем достаточна для оценки производительности вашей модели.

Если это сбивает вас с толку, просто проигнорируйте этот раздел и продолжайте заниматься прогнозированием. Или если вы заинтересовались, изучите, как оценивать модели машинного обучения, чтобы повысить свои навыки.

3.1 Обучение, проверка и тестирование оценки

MAE
RMSE
Loss
epoch
split
MAE_val
RMSE_val
Loss_test
RegLoss_test

563

5.339781

6.604742

0.000249

563.0

train1

NaN

NaN

NaN

NaN

491

6.298254

7.553654

0.000226

491.0

train2

NaN

NaN

NaN

NaN

0

NaN

NaN

NaN

NaN

validate

18.062246

25.076841

0.005187

0.0

0

NaN

NaN

NaN

NaN

test

18.720812

22.780600

0.002678

0.0

3.2 Обучение, перекрестная проверка и перекрестное тестирование

MAE
RMSE

mean

7.470476

9.342587

std

0.249411

0.270676

MAE_val
RMSE_val

mean

30.145557

31.655786

std

13.203131

14.274982

MAE_val
RMSE_val

mean

17.658124

20.027794

std

6.909549

5.900114

Last updated