"Validación de Bootstrap"/"validación cruzada de remuestreo" es algo nuevo para mí, pero fue discutido en la respuesta a esta pregunta. Entiendo que implica 2 tipos de datos: los datos reales y los datos simulados, donde un conjunto dado de datos simulados se genera a partir de los datos reales mediante remuestreo con reemplazo hasta que los datos simulados tengan el mismo tamaño que los datos reales. Puedo pensar en dos enfoques para usar este tipo de datos: (1) ajustar el modelo una vez, evaluarlo muchas veces en muchos conjuntos de datos simulados; (2) ajustar el modelo muchas veces utilizando cada uno de los conjuntos de datos simulados, evaluándolo cada vez contra los datos reales. ¿Cuál (si alguno) es el mejor?
Respuestas
¿Demasiados anuncios?Respuesta breve: Ambas técnicas de validación implican entrenar y probar varios modelos.
Respuesta larga sobre cómo hacerlo mejor: Eso, por supuesto, depende. Pero aquí hay algunos pensamientos que utilizo para guiar mis decisiones sobre la validación de remuestreo. Soy quimiometrista, por lo que estas estrategias y también los términos están más o menos relacionados con problemas analítico-químicos.
Para explicar mis pensamientos un poco, pienso en la validación como medir la calidad del modelo, y en el entrenamiento como medir los parámetros del modelo, lo que lleva a una analogía bastante poderosa con cualquier otro tipo de medición.
Existen dos puntos de vista diferentes con respecto a la validación en estos enfoques:
-
Un punto de vista tradicional para la validación de remuestreo es: el conjunto de datos remuestreado (a veces llamado conjunto de datos sustituto o subconjunto) es prácticamente el mismo que el conjunto de datos original (real).
Por lo tanto, un "modelo sustituto" ajustado al conjunto de datos sustituto es prácticamente igual al modelo ajustado con todo el conjunto de datos real. Pero algunos ejemplos se dejan fuera del conjunto de datos sustituto, el modelo es independiente de estos. Por lo tanto, tomo esos ejemplos excluidos u OOB como conjunto de validación independiente para el modelo sustituto y uso el resultado como aproximación del modelo de datos completos.
Sin embargo, el modelo sustituto a menudo no es realmente equivalente al modelo de datos completos: se utilizaron menos ejemplos para el entrenamiento (incluso en el bootstrap, el número de ejemplos diferentes es menor). Mientras la curva de aprendizaje está aumentando, el modelo sustituto es en promedio un poco peor que el modelo de datos completos. Este es el conocido sesgo pesimista de la validación de remuestreo (si terminas con un sesgo optimista, eso suele ser un indicador de que el conjunto de prueba excluido/OOB no era independiente del modelo). -
El segundo punto de vista es que el conjunto de datos remuestreado es una versión perturbada del conjunto de datos completo. Examinar cómo difieren los modelos sustitutos (o sus predicciones para las muestras excluidas/OOB) del modelo de datos completos aporta información sobre la estabilidad del modelo con respecto a los datos de entrenamiento. Desde esta perspectiva, los modelos sustitutos son algo así como mediciones repetidas. Digamos que tu tarea es medir el contenido de algún mineral de un tren completo de mineral. El mineral no es homogéneo. Por lo tanto, tomas muestras físicas de diferentes ubicaciones y luego miras el contenido general y su variación a lo largo del tren. Del mismo modo, si crees que tu modelo puede no ser estable, puedes mirar el rendimiento general y la variación de los modelos sustitutos.
Si llevas ese pensamiento más lejos, tu enfoque (1) dice algo sobre cuánto varían las predicciones del mismo modelo para diferentes muestras de tamaño $n$. Tu enfoque (2) está más cerca de los enfoques habituales. Pero como ya escribió Momo, la validación generalmente quiere medir el rendimiento para casos desconocidos. Por lo tanto, debes asegurarte de que las pruebas no se realicen con casos que ya son conocidos para el modelo. En otras palabras, solo se prueban los casos excluidos. Esto se repite muchas veces (cada modelo excluye un conjunto diferente de casos) para (a) medir y (b) promediar lo mejor posible las variaciones debidas a los tamaños de muestra finitos (pequeños) (tanto para la prueba como para el entrenamiento).
Normalmente remuestreo los casos, p. ej., un caso = todas las mediciones de un paciente. Luego, los OOB son todos los pacientes cuyas mediciones no están en los datos de entrenamiento. Esto es útil si sabes que las mediciones de un caso son más similares entre sí que a las mediciones de otros casos (o al menos no puedes excluir esta posibilidad).
Note que la validación de remuestreo te permite medir el rendimiento para muestras desconocidas. Si además deseas medir el rendimiento para muestras desconocidas futuras (¡cambio instrumental!), entonces necesitas un conjunto de pruebas que se mida "en el futuro", es decir, un cierto tiempo después de que se midieron todas las muestras de entrenamiento. En química analítica, esto es necesario, por ejemplo, si deseas averiguar con qué frecuencia necesitas volver a calibrar tu instrumento (para cada determinación, diaria, semanal, mensual, ...)
Terminología del bootstrap vs. validación cruzada:
- El remuestreo con reemplazo a menudo se llama bootstrap,
- El remuestreo sin reemplazo validación cruzada.
Ambos pueden tener algún tipo de estratificación. Históricamente, la división para la validación cruzada (al menos en quimiometría) a menudo se ha realizado de manera no aleatoria, p. ej., una validación cruzada de 3-folds en la forma abcabc..abc (conjunto de datos ordenados con respecto al resultado) para calibración/regresión si tienes muy pocos casos (muestras físicas) y deseas asegurarte de que se abarque todo tu rango de datos.
Ambas técnicas generalmente se repiten/iteran varias veces. Nuevamente, por razones históricas y al menos en quimiometría, la validación cruzada de k-folds a menudo significa entrenar y probar k modelos (cada uno probado con el 1/k del conjunto de datos no involucrado en el entrenamiento). Si esta división aleatoria se repite, la gente la llama validación cruzada iterada o repetida.
Además, el número de muestras únicas puede (aproximadamente) elegirse: para la validación cruzada a través del $k$ de $k$-fold o el $n$ de leave-$n$-out validación cruzada. Para bootstrap, puedes extraer más o menos de $n$ muestras en la submuestra (esto rara vez se hace).
- Nota que el bootstrap no es apropiado para algunas técnicas de ajuste de modelos que primero eliminan mediciones duplicadas.
- Existen algunas variantes del bootstrap, p. ej., .632-bootstrap y .632+-bootstrap
Se dice que el remuestreo bootstrap es mejor (convergencia más rápida, menos iteraciones necesarias) que la validación cruzada iterada de $k$-fold. En un estudio para el tipo de datos con el que trabajo, sin embargo, encontramos poca diferencia general: el out-of-bootstrap tenía menos varianza pero más sesgo que la validación cruzada iterada de $k$-fold.
No sé acerca de "mejor" (lo cual probablemente depende de para qué lo uses), pero utilizo la validación de bootstrap para estimar el error en nuevos datos de la siguiente manera (tercera forma si prefieres):
- Dibuja un conjunto de entrenamiento de N observaciones a partir de los datos originales (de tamaño N) con reemplazo.
- Ajusta el modelo a los datos de entrenamiento.
- Evalúa el modelo en las muestras out-of-bag (oob).
Lo que está fuera de la bolsa no siempre está claramente definido. A menudo, son todas esas observaciones que no formaron parte del conjunto de entrenamiento. Más estricto sería (lo uso de esta manera) tener solo observaciones en la muestra oob que tengan una realización de todo el vector predictivo que no forma parte del conjunto de entrenamiento (lo cual es especialmente útil si tienes muchos factores). Aún más estricto es usar una muestra oob que contenga solo aquellas observaciones que tienen una realización diferente de la variable predictiva en los predictores elegidos en el modelo (especialmente útil si el modelo se encuentra con algún procedimiento de selección de variables, por ej. árboles).
Luego suelo repetir esto un número k de veces y agregar los resultados sobre los k-folds (media o mediana o cualquier estadística que sea conveniente). El modelo elegido de esta manera luego puede ajustarse al conjunto de datos general (como en tu opción 2) para adicionalmente evaluar si aún hay una tendencia al sobreajuste (la medida de rendimiento no debería estar demasiado lejos de las muestras de bootstrap).
Si tengo más modelos o una cuadrícula de parámetros u similar, ajusto todos a cada conjunto de entrenamiento y los evalúo a todos en cada muestra oob. También es posible no usar dos veces un conjunto de entrenamiento, sino que para cada modelo o combinación de parámetros de ajuste, dibujar un nuevo par de entrenamiento/oob.
Ver, por ej. El Diseño y Análisis de Experimentos de Referencia.