¿GridSearchCV realiza validación cruzada?

Actualmente estoy trabajando en un problema que compara el rendimiento de tres algoritmos de aprendizaje automático en el mismo conjunto de datos. Dividí el conjunto de datos en 70/30 conjuntos de entrenamiento / prueba y luego realicé la búsqueda en la cuadrícula de los mejores parámetros de cada algoritmo utilizando GridSearchCV y X_train, y_train .

En primer lugar, ¿se supone que debo realizar una búsqueda de cuadrícula en el conjunto de entrenamiento o se supone que está en todo el conjunto de datos?

Segunda pregunta: sé que GridSearchCV usa K-fold en su implementación. ¿Significa que realicé una validación cruzada si usé el mismo X_train, y_train para los tres algoritmos que comparo en el GridSearchCV?

Cualquier respuesta sería apreciada, gracias.

Todos los estimadores en scikit donde el nombre termina con CV realizan una validación cruzada. Pero necesita mantener un conjunto de prueba separado para medir el rendimiento.

Así que necesitas dividir todos tus datos para entrenar y probar. Olvídate de estos datos de prueba por un tiempo.

Y luego pase los datos de este tren solo a la red de búsqueda. GridSearch dividirá los datos de este tren en tren y prueba para ajustar los hiper-parámetros que se le pasan. Y, finalmente, ajustar el modelo en todos los datos del tren con los mejores parámetros encontrados.

Ahora necesita probar este modelo con los datos de prueba que guardó al principio. Esto le dará el rendimiento en el mundo casi real del modelo.

Si utiliza todos los datos en GridSearchCV, habrá una fuga de datos de prueba en el ajuste de parámetros y el modelo final puede no funcionar tan bien en los datos más recientes que no se han visto.

Puedes ver mis otras respuestas que describen el GridSearch con más detalle:

  • Modele ayuda usando Scikit-learn cuando use GridSearch
  • scikit-learn GridSearchCV con repeticiones múltiples

Sí, GridSearchCV realiza validación cruzada. Si comprendo el concepto correctamente, usted quiere mantener parte del conjunto de datos sin ser visto para el modelo para probarlo.

Así que entrena a sus modelos contra el conjunto de datos de trenes y los prueba en un conjunto de datos de prueba.

Aquí estaba haciendo casi lo mismo , es posible que desee comprobarlo …