Я запускаю 10-кратное CV, используя функцию KFold, предоставленную scikit-learn, чтобы выбрать некоторые параметры ядра. Я реализую эту процедуру (grid_search):
1-pick up a selection of parameters
2-generate a svm
3-generate a KFold
4-get the data that correspons to training/cv_test
5-train the model (clf.fit)
6-classify with the cv_testdata
7-calculate the cv-error
8-repeat 1-7
9-When ready pick the parameters that provide the lowest average(cv-error)
Если я не использую перемешивание в генерации KFold, я получаю почти такие же результаты для среднего (cv_errors), если я повторяю одни и те же прогоны, и «лучшие результаты» повторяются. Если я использую перетасовку, я получаю разные значения для среднего (cv-ошибки), если я повторяю один и тот же запуск несколько раз, а «лучшие значения» не повторяются. Я понимаю, что должен получать разные значения cv_errors для каждого прохода KFold, но окончательное среднее значение должно быть одинаковым. Как на самом деле работает KFold с перемешиванием? Каждый раз, когда вызывается KFold, он перемешивает мои индексы и генерирует обучающие/тестовые данные. Как он выбирает разные складки для «обучения/тестирования»? Есть ли случайный способ выбора разных складок для обучения/тестирования? Любые ситуации, в которых выгодно использовать "перетасовку", и ситуации, в которых это не так??