Тестирование и кросс-валидация
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_test0
18.907013
23.143999
0.002765
0.0
1.2 Прогнозирование будущего
Перед тем как делать какие-либо прогнозы, переобучите модель на всех доступных данных, иначе вы значительно снизите точность прогнозирования!
1.3 Визуализируйте обучение
Если вы установили версию NeuralProphet с [live], вы можете дополнительно визуализировать ваш процесс обучения и определить любое переобучение, анализируя каждую эпоху.

491
19.501102
23.570879
0.002867
0.0
491
6.099627
7.32115
0.000215
0.0
2. Перекрестная проверка временных рядов
Временные ряды и перекрестная проверка — это техника, которая также называется тестированием с перемещающимся началом. Она включает в себя деление данных на несколько частей.
Во время первой части мы обучаем модель на части данных, а затем оцениваем ее производительность на следующем наборе данных, который определяется параметром fold_pct (процент образцов в каждой части).
В следующей части мы включаем данные оценки из предыдущей части в данные для обучения, а затем оцениваем производительность модели на более позднем наборе данных.
Этот процесс повторяется до последней части, где данные оценки достигают конца доступных данных. По сути, точка прогноза «перекатывается» вперед по мере перехода от одной части к следующей.
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 Обучение, проверка и тестирование оценки
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 Обучение, перекрестная проверка и перекрестное тестирование
mean
7.470476
9.342587
std
0.249411
0.270676
mean
30.145557
31.655786
std
13.203131
14.274982
mean
17.658124
20.027794
std
6.909549
5.900114
Last updated