¿Cómo elijo un modelo de esta salida [validación cruzada externa]?
Respuesta corta: no lo haces.
Trate la validación cruzada interna como parte del procedimiento de ajuste del modelo. Eso significa que el ajuste, incluido el ajuste de los hiperparámetros (aquí es donde se oculta la validación cruzada interna) es como cualquier otra rutina de inicialización del modelo.
La validación cruzada externa estima el rendimiento de este enfoque de ajuste del modelo. Para eso usas los supuestos habituales
- Los modelos sustitutos externos son equivalentes al modelo "real" construido con todos los datos.k
model.fitting.procedure
- O, en el caso 1. se rompe (sesgo pesimista de validación de remuestreo), al menos los modelos sustitutos externos son equivalentes entre sí.
Esto le permite agrupar (promedio) los resultados de la prueba. También significa que no necesita elegir entre ellos, ya que supone que son básicamente lo mismo. La ruptura de este segundo supuesto, más débil, es la inestabilidad del modelo.k
No , no recoger el aparentemente mejor de los modelos sustitutos - que suele ser sólo "cosecha" incertidumbre de pruebas y conduce a un sesgo optimista.k
Entonces, ¿cómo puedo usar un CV anidado para la selección del modelo?
El CV interno hace la selección.
Me parece que seleccionar el mejor modelo de esos K modelos ganadores no sería una comparación justa ya que cada modelo fue entrenado y probado en diferentes partes del conjunto de datos.
k
- No tener los mismos datos de prueba: como quiere afirmar después que los resultados de la prueba se generalizan a datos nunca vistos, esto no puede hacer la diferencia.
- No tener los mismos datos de entrenamiento:
- si los modelos son estables, esto no hace una diferencia: estable aquí significa que el modelo no cambia (mucho) si los datos de entrenamiento se "perturban" al reemplazar algunos casos por otros.
- Si los modelos no son estables, tres consideraciones son importantes:
- k
- k
- Si la inestabilidad es un problema real, no puede extrapolar bien el rendimiento del modelo "real".
Lo que me lleva a tu última pregunta:
¿Qué tipos de análisis / controles puedo hacer con los puntajes que obtengo de los pliegues K externos?
- verificar la estabilidad de las predicciones (usar validación cruzada iterativa / repetida)
verifique la estabilidad / variación de los hiperparámetros optimizados.
Por un lado, los hiperparámetros de dispersión salvaje pueden indicar que la optimización interna no funcionó. Por otro lado, esto puede permitirle decidir sobre los hiperparámetros sin el costoso paso de optimización en situaciones similares en el futuro. Con costoso no me refiero a los recursos computacionales, sino al hecho de que esta información de "costos" puede utilizarse mejor para estimar los parámetros del modelo "normal".
verifique la diferencia entre la estimación interna y externa del modelo elegido. Si hay una gran diferencia (el ser interno es demasiado optimista), existe el riesgo de que la optimización interna no funcione bien debido al sobreajuste.
Pregunta de update @ user99889: ¿Qué hacer si el CV externo encuentra inestabilidad?
En primer lugar, detectar en el bucle CV externo que los modelos no producen predicciones estables a ese respecto no difiere realmente de detectar que el error de predicción es demasiado alto para la aplicación. Es uno de los posibles resultados de la validación (o verificación) del modelo que implica que el modelo que tenemos no es adecuado para su propósito.
En el comentario que respondía a @davips, estaba pensando en abordar la inestabilidad en el CV interno , es decir, como parte del proceso de optimización del modelo.
Pero ciertamente tiene razón: si cambiamos nuestro modelo en función de los hallazgos del CV externo, es necesaria otra ronda de pruebas independientes del modelo modificado.
Sin embargo, la inestabilidad en el CV externo también sería una señal de que la optimización no se configuró bien, por lo que encontrar inestabilidad en el CV externo implica que el CV interno no penaliza la inestabilidad de la manera necesaria; este sería mi punto principal. crítica en tal situación. En otras palabras, ¿por qué la optimización permite / conduce a modelos muy sobreajustados?
Sin embargo, aquí hay una peculiaridad de que, en mi humilde opinión, puede excusar el cambio adicional del modelo "final" después de una cuidadosa consideración de las circunstancias exactas : como detectamos sobreajuste, cualquier cambio propuesto (menos df / más restrictivo o agregación) al modelo estar en dirección de menos sobreajuste (o al menos hiperparámetros que sean menos propensos a sobreajustar). El objetivo de las pruebas independientes es detectar el sobreajuste: los datos que ya se utilizaron en el proceso de capacitación pueden detectar el subajuste.
Entonces, si estamos hablando, digamos, de reducir aún más el número de variables latentes en un modelo PLS que sería comparablemente benigno (si el cambio propuesto fuera un tipo de modelo totalmente diferente, digamos PLS en lugar de SVM, todas las apuestas estarían apagadas ), y estaría aún más relajado al respecto si supiera que de todos modos estamos en una etapa intermedia de modelado; después de todo, si los modelos optimizados siguen siendo inestables, no hay duda de que se necesitan más casos. Además, en muchas situaciones, eventualmente necesitará realizar estudios diseñados para probar adecuadamente varios aspectos del rendimiento (por ejemplo, generalización a los datos adquiridos en el futuro). Aún así, insistiría en que el proceso de modelado completo necesitaría ser informado, y que las implicaciones de estos cambios tardíos deberían ser discutidas cuidadosamente.
Además, la agregación que incluye una estimación de rendimiento de CV analógico fuera de la bolsa sería posible a partir de los resultados ya disponibles, que es el otro tipo de "postprocesamiento" del modelo que estaría dispuesto a considerar benigno aquí. Una vez más, habría sido mejor si el estudio se diseñó desde el principio para verificar que la agregación no ofrece ninguna ventaja sobre las predicciones individuales (que es otra forma de decir que los modelos individuales son estables).
Actualización (2019): cuanto más pienso en estas situaciones, más favorezco el enfoque de "validación cruzada anidada aparentemente sin anidar" .
Además de la excelente respuesta de cebeleites (+1), la idea básica es que la validación cruzada se utiliza para evaluar el rendimiento de un método para ajustar un modelo, no del modelo en sí. Si necesita realizar la selección del modelo, debe hacerlo de forma independiente en cada pliegue del procedimiento de validación cruzada, ya que es una parte integral del procedimiento de ajuste del modelo. Si utiliza un procedimiento de selección de modelo basado en validación cruzada, esto significa que terminará con una validación cruzada anidada. Es útil considerar el propósito de cada validación cruzada: una es para la selección del modelo y la otra para la estimación del rendimiento.
Haría mi modelo final ajustando el modelo (incluida la selección del modelo) a todo el conjunto de datos, después de usar la validación cruzada anidada para tener una idea del rendimiento que razonablemente podría esperar obtener de ese modelo.
fuente
get an idea of the performance
?No creo que nadie haya respondido realmente la primera pregunta. Por "validación cruzada anidada" creo que se refería a combinarlo con GridSearch. Por lo general, GridSearch tiene un CV incorporado y toma un parámetro sobre cuántos pliegues queremos probar. Combinando esos dos, creo que es una buena práctica, pero el modelo de GridSearch y CrossValidation no es su modelo final. Debería elegir los mejores parámetros y entrenar un nuevo modelo con todos sus datos eventualmente, o incluso hacer una validación cruzada aquí también en datos invisibles y luego, si el modelo realmente es tan bueno, lo entrena en todos sus datos. Ese es tu modelo final.
fuente
GridSearchCV(refit=True)
realidad se ajusta un modelo en los datos COMPLETOS utilizando los mejores parámetros, por lo que ese paso adicional no es necesario. Ver documentos