Урок 10: Валидация и воспроизводимость

Валидация(проверка)

import pandas as pd
from neuralprophet import NeuralProphet, set_log_level

# Загрузка набора данных из CSV-файла с помощью pandas
df = pd.read_csv("https://github.com/ourownstory/neuralprophet-data/raw/main/kaggle-energy/datasets/tutorial01.csv")

# Отключение сообщений журнала, кроме случаев ошибок
set_log_level("ERROR")

# Модель и прогнозирование
m = NeuralProphet()
m.set_plotting_backend("plotly-static")

Разбейте наш набор данных на обучающую и проверочную выборки. Мы будем использовать проверочную выборку для проверки эффективности нашей модели. Размер проверочной выборки составляет 20% от всего нашего набора данных. Настройте размер с помощью параметра valid_p в функции

df_train, df_val = m.split_df(df, valid_p=0.2)

print("Dataset size:", len(df))
print("Train dataset size:", len(df_train))
print("Validation dataset size:", len(df_val))
Dataset size: 1462
Train dataset size: 1170
Validation dataset size: 292

Валидация выполняется путем передачи валидационного набора в метод fit во время обучения. Полученные метрики показывают производительность модели по сравнению с нашим валидационным набором.

metrics = m.fit(df_train, validation_df=df_val, progress=None)
metrics
MAE_valRMSE_valLoss_valRegLoss_valepochMAERMSELossRegLoss

0

151.067062

159.602341

2.067798

0.0

0

75.920654

89.007133

0.699122

0.0

1

147.524399

155.866516

2.007845

0.0

1

74.146973

86.745255

0.676098

0.0

2

143.015457

151.105865

1.931547

0.0

2

71.729416

84.111290

0.645402

0.0

3

137.148010

144.921494

1.832287

0.0

3

68.274185

80.496658

0.602091

0.0

4

129.434494

136.787064

1.701819

0.0

4

64.227638

75.879417

0.549886

0.0

...

...

...

...

...

...

...

...

...

...

180

7.111052

9.061026

0.011818

0.0

180

4.582942

6.183656

0.004233

0.0

181

7.106644

9.057316

0.011808

0.0

181

4.587008

6.228304

0.004246

0.0

182

7.100244

9.049046

0.011786

0.0

182

4.592853

6.206255

0.004245

0.0

183

7.102000

9.050427

0.011790

0.0

183

4.603105

6.197680

0.004274

0.0

184

7.101621

9.050205

0.011789

0.0

184

4.579907

6.184962

0.004225

0.0

185 rows × 9 columns

forecast = m.predict(df)
m.plot(forecast)

Для изучения продвинутых методов проверки и тестирования обратитесь к руководству Тестирование и кросс-валидация в разделе Как сделать.

Воспроизводимость

Вариабельность результатов заключается в том, что SGD находит разные оптимумы при разных запусках. Большая часть случайности происходит из-за случайной инициализации весов, различных скоростей обучения и разного перемешивания данных в дата-лоадере. Мы можем контролировать генератор случайных чисел, установив его начальное значение (seed):

from neuralprophet import set_random_seed

set_random_seed(0)

Чтобы получать идентичные результаты при каждом запуске модели, необходимо перед её обучением явно установить одно и то же случайное число в качестве начального значения генератора случайных чисел (random seed).

Last updated