En general, si tenemos un gran conjunto de datos, podemos dividirlo en (1) capacitación, (2) validación y (3) prueba. Utilizamos la validación para identificar los mejores hiperparámetros en la validación cruzada (por ejemplo, C en SVM) y luego entrenamos el modelo usando los mejores hiperparámetros con el conjunto de entrenamiento y aplicamos el modelo entrenado a la prueba para obtener el rendimiento.
Si tenemos un pequeño conjunto de datos, no podemos crear un conjunto de entrenamiento y prueba (no hay suficientes muestras). Por lo tanto, haremos una validación cruzada (k-fold, leave-one-out, etc.) para evaluar el rendimiento del modelo.
He visto que la validación cruzada anidada (ya sea repetida o estratificada) se ha utilizado en la configuración de pequeños conjuntos de datos, es decir, para generar un rendimiento generalizado del modelo mientras se optimiza la selección de parámetros. Mi pregunta es, ¿cómo puedo obtener los mejores hiperparámetros en validación cruzada anidada (repetida / no repetida)? Estoy interesado en hacer esto en scikit-learn, si es posible. Estoy un poco confundido acerca de cómo hacerlo.
He leído varios recursos pero ninguno me dio la respuesta definitiva a esta pregunta:
Respuestas:
Visión general
Como @RockTheStar concluyó correctamente en los comentarios, la validación cruzada anidada se usa solo para acceder a la estimación del rendimiento del modelo. Disociado de eso, para encontrar los mejores hiperparámetros necesitamos hacer un ajuste simple con validación cruzada en todos los datos.
En detalles:
Ajuste y validación (bucles de muestreo internos y externos)
En el bucle interno que realiza la sintonización de hiperparámetros, los modelos están entrenados en datos de entrenamiento y validados en datos de validación. Encuentra los parámetros óptimos y entrena tu modelo en todos los datos del bucle interno . Aunque fue entrenado para optimizar el rendimiento en los datos de validación, la evaluación es parcial.
Por lo tanto, este modelo se prueba con los datos de prueba, por lo que es de esperar que no haya sesgo, lo que le brinda una estimación del rendimiento.
El modelo final
Ahora que conoce el rendimiento esperado de su modelo, debe entrenarlo con todos sus datos. Pero nuestro modelo no es simplemente el algoritmo, ¡es todo el proceso de construcción del modelo!
Realice el ajuste de hiperparámetro con todos sus datos y las mismas especificaciones del bucle interno. Con los mejores hiperparámetros, entrene su modelo final con todos los datos. El rendimiento esperado de este modelo final es el que evaluó anteriormente con la validación cruzada anidada.
Para reiterar, los hiperparámetros del modelo final es lo que espera que le brinde el rendimiento que encontró en el paso de Ajuste y validación .
fuente