Я пытаюсь обдумать пример вложенного и невложенного резюме в Sklearn. Я проверил несколько ответов, но пример все еще не понятен.
Насколько мне известно, вложенное резюме предназначено для использования другого подмножества данных для выбора лучших параметров классификатора (например, C в SVM) и проверки его производительности. . Таким образом, из набора данных X
внешнее 10-кратное CV (для простоты n=10) создается 10 обучающих наборов и 10 тестовых наборов:
Затем
внутренний 10-CV разбивает
КАЖДЫЙ внешний обучающий набор на 10 обучающих и 10 тестовых наборов:
Код: Выделить всё
From Tr0: (Tr0_0,Te_0_0), ... , (Tr0_9,Te0_9)
From Tr9: (Tr9_0,Te_9_0), ... , (Tr9_9,Te9_9)
Теперь, используя внутренний CV, мы можем найти лучшие значения C для каждого внешнего тренировочного набора. Это делается путем проверки всех возможных значений C с помощью внутреннего CV. Значение, обеспечивающее максимальную производительность (например, точность), выбирается для этого конкретного внешнего тренировочного набора. Наконец, обнаружив лучшие значения C для каждого внешнего обучающего набора, мы можем вычислить несмещенную точность, используя внешние тестовые наборы. При использовании этой процедуры выборки, используемые для определения лучшего параметра (т. е. C), не используются для расчета производительности классификатора, поэтому мы получаем абсолютно беспристрастную проверку.
Пример, представленный на странице Sklearn:
Код: Выделить всё
inner_cv = KFold(n_splits=4, shuffle=True, random_state=i)
outer_cv = KFold(n_splits=4, shuffle=True, random_state=i)
# Non_nested parameter search and scoring
clf = GridSearchCV(estimator=svm, param_grid=p_grid, cv=inner_cv)
clf.fit(X_iris, y_iris)
non_nested_scores[i] = clf.best_score_
# Nested CV with parameter optimization
nested_score = cross_val_score(clf, X=X_iris, y=y_iris, cv=outer_cv)
nested_scores[i] = nested_score.mean()
Насколько я понимаю, код просто вычисляет оценки, используя две разные перекрестные проверки (т. е. разные разделения на обучающий и тестовый наборы). Оба они использовали весь набор данных. GridCV определяет лучшие параметры, используя один (из двух CV), затем cross_val_score вычисляет с помощью второго CV производительность при использовании лучших параметров.
Неправильно ли я интерпретирую вложенное резюме? Чего мне не хватает в примере?
Подробнее здесь:
https://stackoverflow.com/questions/466 ... ikit-learn