¿Cómo obtener hiperparámetros óptimos después de la validación cruzada anidada?

8

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:

Validación cruzada anidada para la selección del modelo

Validación cruzada anidada y selección de características: ¿cuándo realizar la selección de características?

RockTheStar
fuente
Esto menciona scikit-learn, pero tiene una pregunta viable de aprendizaje automático. Esto no me parece fuera de tema.
gung - Restablece a Monica
@gung sí, gracias. El scikit-learn es una parte adicional de la pregunta (una ventaja para mí)
RockTheStar

Respuestas:

6

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 .

Firebug
fuente
Gracias por tu respuesta. Trato de entenderlo pero no estoy seguro si lo entiendo. Entonces, ¿dónde obtengo exactamente mi mejor conjunto de hiperparámetros?
RockTheStar
@RockTheStar Actualicé la respuesta. Básicamente, vuelve a ajustar (es decir, realiza el ajuste nuevamente y luego ajusta el modelo ajustado en todos los datos): aquí es donde viene su mejor apuesta para hiperparámetros óptimos.
Firebug
1
Básicamente, está diciendo que el CV anidado es para verificar el rendimiento del modelo. Y necesitamos hacer un CV simple para obtener datos completos nuevamente para obtener los parámetros óptimos. Estoy en lo cierto?
RockTheStar
@RockTheStar Sí, lo resumiste todo correctamente.
Firebug
1
@nafizh Lo siento por tomar tanto tiempo para responder su consulta, no había visto la notificación (?). Todas las estimaciones de rendimiento deben basarse en el CV anidado, que es el que construyó para probar su estrategia de construcción de modelos. Para realizar el ajuste final del hiperparámetro, realice el bucle interno en todos los datos y elija el mejor según el mismo criterio que utilizó en el CV anidado. Luego lo ajusta a todos los datos y ese es su modelo final, pero el rendimiento predictivo que le atribuye es el que obtuvo en el CV anidado .
Firebug