¿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
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
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 l
fuente
Respuestas:
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.
fuente
Solo para agregar a la respuesta de @ mark999, el
caret
paquete 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
rms
paquete, perocaret
te permite adaptar prácticamente todos los métodos de aprendizaje disponibles en R, mientras quevalidate
solo funciona conrms
métodos (creo).El
caret
paquete 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
fuente
train
), hay una forma de entrenar con el conjunto de datos completo?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
validate
elrms
paquete 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.
fuente
Creo que tienes muchas preguntas diferentes aquí:
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.
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
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.
fuente
...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?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?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.
fuente