¿Entrenamiento con el conjunto de datos completo después de la validación cruzada?


140

¿Es siempre una buena idea entrenar con el conjunto de datos completo después de la validación cruzada ? Dicho de otra manera, ¿está bien entrenar con todas las muestras en mi conjunto de datos y no poder verificar si este ajuste en particular se sobreajusta ?


Algunos antecedentes sobre el problema:

Digamos que tengo una familia de modelos parametrizados por . Digamos también que tengo un conjunto de puntos de datos y que selecciono el modelo con validación cruzada k-fold para elegir el modelo que mejor generaliza los datos. NαN

Para la selección del modelo, puedo hacer una búsqueda (por ejemplo, una búsqueda de cuadrícula) en , por ejemplo, ejecutando la validación cruzada k-fold para cada candidato. En cada uno de los pliegues en la validación cruzada, termino con el modelo aprendido . βαα βα

El punto de validación cruzada es que para cada uno de estos pliegues puedo verificar si el modelo aprendido tenía un sobreajuste, probándolo en "datos no vistos". Dependiendo de los resultados, podría elegir el modelo aprendido para los parámetros que se generalizaron mejor durante la validación cruzada en la búsqueda de cuadrícula.α mejorβbestαbest

Ahora, digamos que después de la selección del modelo , me gustaría usar todos los puntos en mi conjunto de datos y espero aprender un mejor modelo. Para esto podría usar los parámetros correspondientes al modelo que elegí durante la selección del modelo, y luego, después de entrenarme en el conjunto de datos completo, obtendría un nuevo modelo aprendido . El problema es que, si uso todos los puntos en mi conjunto de datos de entrenamiento, no puedo comprobar si este nuevo modelo aprendido overfits sobre cualquier dato que no se ven. ¿Cuál es la forma correcta de pensar en este problema?α b e s t β f u l l β f u l lNαbestβfull βfull


2
Casi un duplicado exacto: stats.stackexchange.com/questions/52274 con muchas respuestas valiosas . Quizás estos hilos deberían fusionarse, pero no estoy seguro en qué dirección. Ambos han aceptado respuestas que son muy buenas.
ameba

Respuestas:


111

La forma de pensar en la validación cruzada es estimar el rendimiento obtenido utilizando un método para construir un modelo, en lugar de estimar el rendimiento de un modelo.

Si usa la validación cruzada para estimar los hiperparámetros de un modelo (los s) y luego usa esos hiperparámetros para ajustar un modelo a todo el conjunto de datos, entonces está bien, siempre que reconozca que la estimación de la validación cruzada de rendimiento es probable que sea (posiblemente sustancialmente) sesgo optimista. Esto se debe a que parte del modelo (los hiperparámetros) se han seleccionado para minimizar el rendimiento de la validación cruzada, por lo que si la estadística de validación cruzada tiene una varianza distinta de cero (y lo hará) existe la posibilidad de un ajuste excesivo El criterio de selección del modelo.α

Si desea elegir los hiperparámetros y estimar el rendimiento del modelo resultante, debe realizar una validación cruzada anidada, donde la validación cruzada externa se utiliza para evaluar el rendimiento del modelo y en cada pliegue cruzado. La validación se utiliza para determinar los hiperparámetros por separado en cada pliegue. Usted construye el modelo final utilizando la validación cruzada en todo el conjunto para elegir los hiperparámetros y luego construye el clasificador en todo el conjunto de datos usando los hiperparámetros optimizados.

Por supuesto, esto es computacionalmente costoso, pero vale la pena, ya que el sesgo introducido por la estimación de rendimiento inadecuado puede ser grande. Ver mi papel

GC Cawley y NLC Talbot, Ajuste excesivo en la selección del modelo y posterior sesgo de selección en la evaluación del rendimiento, Journal of Machine Learning Research, 2010. Research, vol. 11, págs. 2079-2107, julio de 2010. ( www , pdf )

Sin embargo, todavía es posible tener un ajuste excesivo en la selección del modelo (la validación cruzada anidada solo le permite probarlo). Un método que he encontrado útil es agregar un término de regularización al error de validación cruzada que penaliza los valores de hiperparámetros que probablemente den como resultado modelos demasiado complejos, vea

GC Cawley y NLC Talbot, Prevención del ajuste excesivo en la selección de modelos mediante la regularización bayesiana de los hiperparámetros, Journal of Machine Learning Research, volumen 8, páginas 841-861, abril de 2007. ( www , pdf )

Por lo tanto, las respuestas a su pregunta son: (i) sí, debe usar el conjunto de datos completo para producir su modelo final, ya que cuantos más datos use, es más probable que generalice bien, pero (ii) asegúrese de obtener una estimación de rendimiento imparcial a través de validación cruzada anidada y potencialmente considerar penalizar la estadística de validación cruzada para evitar aún más el ajuste excesivo en la selección del modelo.


3
+1: Responde a la pregunta: "Si usa la validación cruzada para estimar los hiperparámetros de un modelo (los αs) y luego usa esos hiperparámetros para ajustar un modelo a todo el conjunto de datos, entonces está bien ..."
Neil G

44
@soufanom, no, el uso de "experimentos iniciales" para tomar decisiones con respecto al modelo probablemente resulte en un ajuste excesivo y casi con seguridad introducirá un sesgo optimista en el análisis de rendimiento. La validación cruzada utilizada para el análisis de rendimiento debe repetir CADA paso utilizado para ajustar el modelo de forma independiente en cada pliegue. Los experimentos en mi trabajo muestran que los modelos de kernel pueden ser muy sensibles a este tipo de sesgo, por lo que es vital realizar la selección del modelo y la evaluación del rendimiento con todo el rigor posible.
Dikran Marsupial

3
Para los métodos de kernel, como el SVM, a menudo es posible realizar una validación cruzada de dejar uno fuera casi sin costo computacional (ver los documentos enumerados en mi respuesta). Utilizo esta validación cruzada "virtual" de dejar uno fuera para ajustar los hiperparámetros, anidados en la validación cruzada k-fold para la evaluación del rendimiento. El costo es entonces bastante razonable. En mi opinión, no es aceptable utilizar ningún procedimiento en el que la evaluación del rendimiento esté sesgada de alguna manera por el ajuste de los hiperparámetros. Vale la pena el gasto computacional para obtener una estimación confiable.
Dikran Marsupial

2
@DikranMarsupial. No entiendo el tercer párrafo en su respuesta. Si hago una validación cruzada anidada, obtendré un conjunto diferente de hiperparámetros para cada pliegue del CV externo (es decir, obtengo un conjunto de hiperparámetros al ejecutar el CV interno en una cuadrícula de parámetros). ¿Cómo elijo el mejor conjunto de hiperparámetros?
Amelio Vazquez-Reina

1
La validación cruzada es esencialmente un medio para estimar el rendimiento de un método de ajuste de un modelo, en lugar del método en sí. Entonces, después de realizar una validación cruzada anidada para obtener la estimación del rendimiento, simplemente reconstruya el modelo final utilizando todo el conjunto de datos, utilizando el procedimiento que ha validado de forma cruzada (que incluye la selección de los hiperparámetros).
Dikran Marsupial

23

Solo para agregar a la respuesta de @ mark999, el caretpaquete de Max Kuhn (Entrenamiento de clasificación y regresión) es la fuente más completa en R para la selección de modelos basada en la validación cruzada bootstrap o CV N-fold y algunos otros esquemas también.

No hay que ignorar la grandeza del rmspaquete, pero carette permite adaptar prácticamente todos los métodos de aprendizaje disponibles en R, mientras que validatesolo funciona con rmsmétodos (creo).

El caretpaquete es una infraestructura única para preprocesar datos, ajustar y evaluar cualquier modelo popular, por lo tanto, es fácil de usar para todos los métodos y proporciona una evaluación gráfica de muchas medidas de rendimiento (algo que junto al problema de sobreajuste podría influir considerablemente en la selección del modelo). bien) sobre su cuadrícula e importancia variable.

Consulte las viñetas del paquete para comenzar (es muy fácil de usar) Selección de variables de
preprocesamiento de datos
con caret
Creación de modelos con caret
Importancia de variables

También puede ver el sitio web de caret para obtener más información sobre el paquete y ejemplos de implementación específicos:
sitio web oficial de caret


Gracias. ¿Sabes si, después de la selección del modelo (que se realiza llamando train), hay una forma de entrenar con el conjunto de datos completo?
Amelio Vazquez-Reina

No estoy seguro de si es una buena idea o por qué querría hacerlo, pero puede ajustar el modelo final devuelto por el tren al conjunto de datos completo.
Momo

16

Creo que Frank Harrell recomendaría la validación de arranque en lugar de la validación cruzada. La validación de Bootstrap le permitiría validar el modelo ajustado en el conjunto de datos completo, y es más estable que la validación cruzada. Puedes hacerlo en R usando validateel rmspaquete de Harrell .

Para obtener más información, consulte el libro "Estrategias de modelado de regresión" de Harrell y / o "Una introducción a Bootstrap" de Efron y Tibshirani.


99
Para omitir el siguiente mito sobre el "CV incorrecto", este es un problema de terminología: la "validación cruzada" de Harrell significa CV doble y "validación de arranque" significa volver a muestrear el CV. Obviamente, estoy de acuerdo en que este segundo sabor es más estable y en general más agradable, pero también es un tipo de validación cruzada.

1
mark999 o @mbq, ¿le importaría desarrollar cómo Bootstrap permitiría validar un modelo ajustado en el conjunto de datos completo?
Amelio Vazquez-Reina

1
@ user27915816 Bueno, en principio de todos modos; La idea detrás de la validación cruzada es que compruebe si el método de entrenamiento dado está haciendo de manera confiable buenos modelos en conjuntos muy similares al final y, de ser así, generalice esta observación al conjunto completo con suposiciones silenciosas de que no sucederá nada extraño. y ese método CV que usaste no está sesgado de alguna manera. Por supuesto, esto es casi siempre lo suficientemente bueno, pero nunca puede estar seguro de que el modelo construido sobre todos los datos que tiene no está sobreajustado.

14

Creo que tienes muchas preguntas diferentes aquí:

El problema es que, si uso todos los puntos de mi conjunto de datos para el entrenamiento, ¡no puedo verificar si este nuevo modelo aprendido βfull se adapta demasiado!

La cuestión es que puede usar (un) paso de validación solo para una cosa: ya sea para la optimización de parámetros, (x) o para estimar el rendimiento de generalización.

Por lo tanto, si realiza la optimización de parámetros mediante validación cruzada (o cualquier otro tipo de determinación de parámetros basada en datos), necesita muestras de prueba que sean independientes de esas muestras de capacitación y optimización. Dikran lo llama validación cruzada anidada, otro nombre es validación cruzada doble. O, por supuesto, un conjunto de prueba independiente.

Entonces, esta es la pregunta para esta publicación: ¿es una buena idea entrenar con el conjunto de datos completo después de la validación cruzada k-fold? ¿O es mejor seguir con uno de los modelos aprendidos en una de las divisiones de validación cruzada para αbest?

Usar uno de los modelos de validación cruzada generalmente es peor que entrenar en el conjunto completo (al menos si el rendimiento de la curva de aprendizaje = f (n muestras) sigue aumentando. En la práctica, es: si no fuera así, probablemente habría establecido aparte un conjunto de pruebas independiente).

Si observa una gran variación entre los modelos de validación cruzada (con los mismos parámetros), entonces sus modelos son inestables. En ese caso, la agregación de los modelos y de hecho puede ayudar a ser mejor que usar el uno modelo entrenado en el conjunto de los datos.

Actualización: Esta agregación es la idea detrás del ensacado aplicado al remuestreo sin reemplazo (validación cruzada) en lugar de remuestreo con reemplazo (validación bootstrap / out-of-bootstrap).

Aquí hay un artículo donde usamos esta técnica:
Beleites, C. y Salzer, R .: Evaluación y mejora de la estabilidad de los modelos quimiométricos en situaciones de pequeño tamaño de muestra, Anal Bioanal Chem, 390, 1261-1271 (2008).
DOI: 10.1007 / s00216-007-1818-6

Quizás lo más importante, ¿cómo puedo entrenar con todos los puntos en mi conjunto de datos y aún luchar contra el sobreajuste?

Al ser muy conservador con los grados de libertad permitidos para el "mejor" modelo, es decir, teniendo en cuenta la incertidumbre (aleatoria) sobre los resultados de validación cruzada de optimización. Si el df es realmente apropiado para los modelos de validación cruzada, es muy probable que no sean demasiados para el conjunto de entrenamiento más amplio . La trampa es que la optimización de parámetros es en realidad múltiples pruebas. Debe protegerse contra conjuntos de parámetros de aspecto accidental.


...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...¿Puedes explicar esto un poco más? por ejemplo, si estoy ejecutando una regresión logística en una configuración validada cruzada de 10 k y termino con 10 conjuntos de coeficientes, ¿recomienda agregar las estimaciones de coeff para formar un modelo final? Si es así, ¿cómo se puede hacer esto, simplemente tomando los medios?
Zhubarb

@cbeleites puedes dar más detalles If the d.f. are actually appropriate for the cross validation models. Según tengo entendido, usted argumenta que los conjuntos de tren / validación no son muy grandes en comparación con el conjunto de datos completo, ¿estoy en lo cierto?
jpcgandre

1
1k

1
Más importante aún: los modelos sustitutos de validación cruzada iterativa comparten el mismo conjunto de hiperparámetros. Es decir, son equivalentes en todo lo que consideres importante, pero la selección arbitraria de casos de capacitación y prueba. Por lo tanto, seleccionar un modelo "bueno" debería seleccionar principalmente una buena combinación de conjunto de prueba / entrenamiento, que es fundamentalmente lo que generalmente no queremos: queremos una opción que se generalice bien y, por lo tanto, no solo funcione para casos favorables. Desde este punto de vista, seleccionar un modelo sustituto de una validación cruzada "normal" no tiene ningún sentido para mí.
cbeleites

1
11k

6

Lo que haces no es una validación cruzada, sino algún tipo de optimización estocástica.

La idea de CV es simular un rendimiento en datos no vistos realizando varias rondas de construcción del modelo en un subconjunto de objetos y pruebas en los restantes. Los resultados algo promediados de todas las rondas son la aproximación del rendimiento de un modelo entrenado en todo el conjunto .

En su caso de selección de modelo, debe realizar un CV completo para cada conjunto de parámetros y, por lo tanto, obtener una aproximación del rendimiento del conjunto completo para cada configuración, por lo que aparentemente es lo que desea tener.

Sin embargo, tenga en cuenta que no está garantizado en absoluto que el modelo con la mejor precisión aproximada sea el mejor de hecho: puede validar de forma cruzada todo el procedimiento de selección del modelo para ver que existe algún rango en el espacio de parámetros para el cual las diferencias en Las precisiones del modelo no son significativas.


2
β

@AmV Si es así, está bien, como escribí, CV ya prueba el escenario completo, no se puede decir más sin nuevos datos. Una vez más, puede hacer un CV anidado como máximo para ver si la selección del modelo en sí no impone un sobreajuste (si la selección ofrece una mejora muy buena o los datos son ruidosos, el riesgo de esto es bastante grande).
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.