Кривая обучения одинакова для обучения и проверки? - PullRequest
0 голосов
/ 01 мая 2018

Я тренировал нейронную сеть с 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)
...