Понимание cross_val_score в kfold scitkit learn

Чтение документа для проверки перекрестного сгиба http://scikit-learn.org/stable/modules/cross_validation.html Я пытаюсь понять процедуру обучения для каждого сгиба.

Это правильно: при создании cross_val_score каждая складка содержит новый набор для обучения и тестирования, эти наборы для обучения и тестирования используются переданным в классификаторе clf в приведенном ниже коде для оценки производительности каждого сгиба?

Это означает, что увеличение размера сгиба может повлиять на точность в зависимости от размера тренировочного набора, так как увеличение количества сгибов уменьшает данные тренировки, доступные для каждого сгиба?

Из документа cross_val_score генерируется с помощью:

from sklearn.model_selection import cross_val_score
clf = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(clf, iris.data, iris.target, cv=5)
scores                                              
array([ 0.96...,  1.  ...,  0.96...,  0.96...,  1.        ])

1 ответ

Решение

Я не думаю, что утверждение "каждый фолд содержит новый набор тренировок и тестов" является правильным.

По умолчанию, cross_val_score использования KFold перекрестная проверка. Это работает путем разделения набора данных на K равных сгибов. Скажем, у нас есть 3 сгиба (fold1, fold2, fold3), тогда алгоритм работает следующим образом:

  1. Используйте fold1 и fold2 в качестве тренировочного набора в svm и тестируйте производительность на fold3.
  2. Используйте fold1 и fold3 как наш тренировочный набор в svm и тестируйте производительность на fold2.
  3. Используйте fold2 и fold3 как наш тренировочный набор в svm и тестируйте производительность на fold1.

Таким образом, каждая складка используется как для обучения, так и для тестирования.

Теперь ко второй части вашего вопроса. Если вы увеличиваете размер сгиба, вы уменьшаете количество тренировочных выборок для каждого из прогонов (выше, это будет 1, 2 и 3), но общее количество тренировочных выборок остается неизменным.

Как правило, выбор правильного количества сгибов - это и искусство, и наука. Для некоторых эвристик о том, как выбрать количество сгибов, я бы предложил этот ответ. Суть в том, что на выбор количества сгибов может слегка повлиять точность. Для больших наборов данных вы относительно безопасны с большим количеством сгибов; для небольших наборов данных вы должны выполнить упражнение несколько раз с новыми случайными разбиениями.

Другие вопросы по тегам