Перекрестная проверка на самом деле не улучшает модель, но помогает точно оценить ее производительность.
Допустим, в начале обучения вы делите свои данные на 80% обучающих и 20% тестовых наборов. Затем вы тренируетесь на указанных 80%, тестируете на 20% и получаете показатель производительности c.
Проблема заключается в том, что при разделении данных в начале вы делали это, мы надеемся, случайно или иначе произвольно, и в результате полученная вами производительность модели каким-то образом зависит от генератора псевдослучайных чисел, который вы ' Мы использовали или ваше суждение.
Таким образом, вместо этого вы делите свои данные, например, на 5 случайных равных множеств. Затем вы берете набор 1, откладываете его в сторону, тренируетесь на наборах 2-5, тестируете набор 1 и записываете метрику производительности c. Затем вы откладываете набор 2 и тренируете свободную sh (не обученную) модель на наборах 1, 3-5, проверяете набор 2, записываете метри c и т. Д.
После 5 У вас будет 5 показателей производительности. Если вы возьмете их среднее (наиболее подходящее), это будет лучшим представлением производительности вашей модели, потому что вы «усредняете» случайные эффекты разделения данных.
Я думаю, это хорошо объясняется в это блог с некоторым кодом в Python.