Я тренировал нейронную сеть с MLPRegressor от scikit-learn, используя ShuffleSplit с 10 разделениями и 20% данных, отведенных для тестирования. Сначала я использую GridSearchCV, чтобы найти хорошие параметры. Затем я создаю новый (неприспособленный) оценщик с этими параметрами и, наконец, использую функцию plot_learning_curve с счетчиком MAPE и тем же ShuffleSplit cv.
В большинстве примеров кривых обучения, которые я видел, кривые проверки и обучения четко разделены. Тем не менее, я постоянно получаю кривые обучения, где перекрестная проверка и кривая обучения практически идентичны. Как мне это интерпретировать - кажется ли это реалистичным или я где-то допустил ошибку?
Кривая обучения
По запросу, вот код:
node_range = list(range(1,16))
layer_range = range(1,6)
hidden_sizes = [(nodes,) * layers for layers in layer_range for nodes in node_range]
param_grid = [{'hidden_layer_sizes': hidden_sizes,
'activation': ['relu'],
'learning_rate_init': [0.5]}
]
cv = ShuffleSplit(n_splits=10, test_size=0.2)
search = GridSearchCV(estimator, param_grid, cv=cv, scoring=neg_MAPE, refit=True)
search.fit(X, y)
best_params = search.best_params_
estimator = MLPRegressor().set_params(**best_params)
plot_learning_curve(estimator, X, y, cv=cv, scoring=neg_MAPE)
А вот мой бомбардир:
def mean_absolute_percentage_error(y_true, y_pred):
y_true, y_pred = np.array(y_true), np.array(y_pred)
return np.mean(np.abs((y_true - y_pred) / y_true)) * 100
neg_MAPE = make_scorer(mean_absolute_percentage_error, greater_is_better=False)