#cross-validation #skorch
#перекрестная проверка #скорч
Вопрос:
Я использовал skorch для обучения моей модели, которая определена следующим образом,
net_reg = NeuralNetRegressor(
Network_binaryDC,
batch_size=32,
lr=0.01,
max_epochs=1000,
criterion=nn.MSELoss,
optimizer=torch.optim.Adam,
train_split=None,
iterator_train__shuffle=True
)
Когда я использую следующие два метода (с или без 5-CV) для прогнозирования результата, я обнаружил, что результат от 5-CV намного хуже.
Способ 1
net_reg.fit(X, y)
y_pred = net_reg.predict(X)
mse_train = mean_squared_error(y, y_pred)
r2_train = r2_score(y, y_pred)
Способ 2
y_pred = cross_val_predict(net_reg, X, y, cv=5)
mse_train = mean_squared_error(y, y_pred)
r2_train = r2_score(y, y_pred)
Вот результат.
Способ 1
epoch train_loss dur
------- ------------ ------
...
996 23.6809 0.0090
997 23.8153 0.0080
998 24.9554 0.0090
999 25.1953 0.0090
1000 28.5202 0.0100
mse_train: 27.771873
r2_train: 0.9892790619950554
Способ 2
epoch train_loss dur
------- ------------ ------
...
996 36.4650 0.0090
997 31.8118 0.0090
998 31.5955 0.0100
999 28.3348 0.0100
1000 30.0020 0.0080
mse_train: 2985.767
r2_train: 0.23378432943403352
Потери поезда в конце моих эпох почти одинаковы для двух методов, но почему mse и r2 намного хуже при использовании 5-CV с cross_val_predict?