Лучшие гиперпараметры GridSearchCV не обеспечивают максимальной точности - PullRequest
0 голосов
/ 21 июня 2020

Используя набор данных UCI Human Activity Recognition, я пытаюсь создать модель DecisionTreeClassifier. Если параметры по умолчанию и random_state равно 156, модель возвращает следующую точность:

dt_clf = DecisionTreeClassifier(random_state=156)
dt_clf.fit(X_train, y_train)
pred = dt_clf.predict(X_test)
print('DecisionTree Accuracy Score: {0:.4f}'.format(accuracy_score(y_test, pred)))

Вывод:

DecisionTree Accuracy Score: 0.8548

С произвольным набором max_depth, I запустил GridSearchCV, чтобы найти его лучшие параметры:

params = {
    'max_depth': [6, 8, 10, 12, 16, 20, 24]
}
grid_cv = GridSearchCV(dt_clf, param_grid=params, scoring='accuracy', cv=5, verbose=1)
grid_cv.fit(X_train, y_train)
print('GridSearchCV Best Score: {0:.4f}'.format(grid_cv.best_score_))
print('GridSearchCV Best Params:', grid_cv.best_params_)

Вывод:

Fitting 5 folds for each of 7 candidates, totalling 35 fits
[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1
concurrent workers. [Parallel(n_jobs=1)]: Done  35 out of  35 |
elapsed:  1.6min finished GridSearchCV Best Score: 0.8513 GridSearchCV
Best Params: {'max_depth': 16}

Теперь я хотел проверить «лучший параметр» max_depth=16 на отдельный набор тестов, чтобы убедиться, что это действительно лучший параметр среди предоставленного списка max_depth = [6, 8, 10, 12, 16, 20, 24].

max_depths = [6, 8, 10, 12, 16, 20, 24]
for depth in max_depths:
    dt_clf = DecisionTreeClassifier(max_depth=depth, random_state=156)
    dt_clf.fit(X_train, y_train)
    pred = dt_clf.predict(X_test)
    accuracy = accuracy_score(y_test, pred)
    print('max_depth = {0} Accuracy: {1:.4f}'.format(depth, accuracy))

Но, к моему удивлению, тест показал, что «лучший параметр» max_depth=16 не где близок к тому, чтобы быть лучшим из всех:

Вывод:

max_depth = 6 Accuracy: 0.8558
max_depth = 8 Accuracy: 0.8707
max_depth = 10 Accuracy: 0.8673
max_depth = 12 Accuracy: 0.8646
max_depth = 16 Accuracy: 0.8575
max_depth = 20 Accuracy: 0.8548
max_depth = 24 Accuracy: 0.8548

Я понимаю, что лучшие параметры из GridSearchCV основаны на средних тестах, полученных в результате перекрестная проверка обучающего набора (X_train, y_train), но разве это не должно отражаться на тестовом наборе в определенной степени? Я предполагаю, что наборы данных UCI не несбалансированы, поэтому смещение набора данных не должно быть проблемой.

1 Ответ

2 голосов
/ 21 июня 2020

Ваше неявное предположение, что лучшие гиперпараметры, найденные во время CV , определенно должны давать наилучшие результаты на невидимом тестовом наборе, неверно. Нет абсолютно никакой гарантии , что что-то подобное произойдет.

Лог c выбора гиперпараметров таким образом заключается в том, что это лучшее, что мы можем сделать, учитывая (ограниченную) информацию имеем под рукой на момент примерки модели, т.е. это наиболее рациональный выбор . Но общий контекст проблемы здесь - это принятие решения в условиях неопределенности (решение действительно является выбором гиперпараметров), и в таком контексте нет никаких гарантий производительности для невидимых данных. .

Имейте в виду, что по определению (и в соответствии с базовой статистической теорией) результаты CV смещены не только в зависимости от используемого набора данных c, но даже от конкретных c разделение на тренировочные и проверочные складки; другими словами, всегда существует вероятность того, что, используя другое разделение CV одних и тех же данных, вы получите разные «лучшие значения» для задействованных гиперпараметров - возможно, даже в большей степени при использовании нестабильного классификатора, такого как решение tree.

Все это, конечно, не означает, что такое использование CV бесполезно или что мы должны провести остаток нашей жизни, пробуя различные разделы CV наших данных, чтобы быть уверенными, что у нас есть «лучшие» гиперпараметры; это просто означает, что CV действительно является полезным и рациональным эвристическим c подходом, но ожидать какой-либо математической гарантии того, что его результаты будут оптимальными для невидимых данных, необоснованно.

...