Diferencias entre validación cruzada y bootstrapping para estimar el error de predicción

103

Me gustaría conocer su opinión sobre las diferencias entre la validación cruzada y el arranque para estimar el error de predicción.

¿Funciona mejor para conjuntos de datos pequeños o grandes conjuntos de datos?

conceder
fuente

Respuestas:

88

Se reduce a varianza y sesgo (como de costumbre). El CV tiende a ser menos sesgado, pero el CV K-fold tiene una variación bastante grande. Por otro lado, el bootstrapping tiende a reducir drásticamente la varianza pero da resultados más sesgados (tienden a ser pesimistas). Se han adaptado otros métodos de arranque para tratar el sesgo de arranque (como las reglas 632 y 632+).

Otros dos enfoques serían el "CV de Montecarlo", también conocido como "CV de dejar fuera del grupo", que realiza muchas divisiones aleatorias de los datos (algo así como mini-entrenamientos y divisiones de prueba). La variación es muy baja para este método y el sesgo no es tan malo si el porcentaje de datos en la reserva es bajo. Además, el CV repetido se pliega en K varias veces y promedia los resultados similares al pliegue en K regular. Soy más parcial a esto ya que mantiene el bajo sesgo y reduce la varianza.

Editar

Para tamaños de muestra grandes, los problemas de varianza se vuelven menos importantes y la parte computacional es más un problema. Todavía me apegaría por CV repetido para tamaños de muestra pequeños y grandes.

Algunas investigaciones relevantes están a continuación (especialmente Kim y Molinaro).

Referencias

Bengio, Y., y Grandvalet, Y. (2005). Sesgo en la estimación de la varianza de la validación cruzada k-fold. Modelado estadístico y análisis para problemas de datos complejos, 75-95.

Braga-Neto, UM (2004). La validación cruzada es válida para la clasificación de microarrays de muestra pequeña Bioinformática, 20 (3), 374–380. doi: 10.1093 / bioinformática / btg419

Efron, B. (1983). Estimación de la tasa de error de una regla de predicción: mejora en la validación cruzada. Revista de la Asociación Americana de Estadística, 316–331.

Efron, B. y Tibshirani, R. (1997). Mejoras en la validación cruzada: El. 632+ método de arranque. Revista de la Asociación Americana de Estadística, 548-560.

Furlanello, C., Merler, S., Chemini, C. y Rizzoli, A. (1997). Una aplicación de la regla bootstrap 632+ a datos ecológicos. WIRN 97.

Jiang, W. y Simon, R. (2007). Una comparación de los métodos de bootstrap y un enfoque de bootstrap ajustado para estimar el error de predicción en la clasificación de microarrays. Estadísticas en medicina, 26 (29), 5320-5334.

Jonathan, P., Krzanowski, W. y McCarthy, W. (2000). Sobre el uso de la validación cruzada para evaluar el rendimiento en la predicción multivariante. Estadísticas e informática, 10 (3), 209–229.

Kim, J.-H. (2009) Estimación de la tasa de error de clasificación: validación cruzada repetida, retención repetida y arranque. Estadística computacional y análisis de datos, 53 (11), 3735–3745. doi: 10.1016 / j.csda.2009.04.009

Kohavi, R. (1995). Un estudio de validación cruzada y bootstrap para la estimación de precisión y la selección del modelo. Conferencia Internacional Conjunta sobre Inteligencia Artificial, 14, 1137–1145.

Martin, J. y Hirschberg, D. (1996). Pequeñas estadísticas de muestra para tasas de error de clasificación I: Mediciones de tasa de error.

Molinaro, AM (2005). Estimación del error de predicción: una comparación de los métodos de remuestreo. Bioinformática, 21 (15), 3301–3307. doi: 10.1093 / bioinformática / bti499

Sauerbrei, W. y Schumacher1, M. (2000). Bootstrap y validación cruzada para evaluar la complejidad de los modelos de regresión basados ​​en datos. Análisis de datos médicos, 26-28.

Tibshirani, RJ y Tibshirani, R. (2009). Una corrección de sesgo para la tasa de error mínima en la validación cruzada. Arxiv preprint arXiv: 0908.2904.

topepo
fuente
2
El sesgo de Bootstrap no es pesimista, es optimista (Bootstrap simple no .0632). Esto se debe a que Bootstrap utiliza muchos elementos de entrenamiento para probar el modelo, lo que genera mucho peso en el error de muestra.
D1X
33

@Frank Harrell ha trabajado mucho en esta cuestión. No sé de referencias específicas.

Pero prefiero ver las dos técnicas como para diferentes propósitos. La validación cruzada es una buena herramienta para decidir sobre el modelo: le ayuda a evitar engañarse a sí mismo al pensar que tiene un buen modelo cuando, de hecho, está sobreajustando.

Cuando su modelo está arreglado, usar el bootstrap tiene más sentido (al menos para mí).

Hay una introducción a estos conceptos (más pruebas de permutación) usando R en http://www.burns-stat.com/pages/Tutor/bootstrap_resampling.html

Patrick Burns
fuente
2
¿Tiene sentido usar CV primero para seleccionar un modelo y luego usar bootstrapping en los mismos datos para evaluar los errores de sus estimaciones? Específicamente, quiero hacer una regresión lineal usando ML en datos con ruido desconocido no gaussiano.
sebhofer
9

Tengo entendido que el bootstrapping es una forma de cuantificar la incertidumbre en su modelo, mientras que la validación cruzada se usa para la selección del modelo y para medir la precisión predictiva.

Cañada
fuente
Muchas gracias por las respuestas. Pensé que bootstrapping era mejor cuando tienes un pequeño conjunto de datos (<30 obs). ¿No?
conceder el
Yo creo que si. La validación cruzada puede no ser razonable cuando tiene un tamaño de muestra pequeño. Podrías dejar una validación cruzada, pero eso tiende a ser demasiado optimista.
Glen
También tenga en cuenta que hacer bootstrapping con una pequeña muestra conducirá a algunas estimaciones sesgadas, como se señaló en el artículo original de Efron.
Glen
¿No es la medición de la precisión predictiva una forma de cuantificar la incertidumbre? Entiendo que el CV es más común para la selección del modelo, pero digamos que quiero estimar el AUC para un LASSO, ¿es mejor el CV o el bootstrapping?
Max Ghenis
9

Una diferencia es que la validación cruzada, como jackknife, utiliza todos sus puntos de datos, mientras que el arranque, que remuestrea sus datos al azar, puede no alcanzar todos los puntos.

Puede arrancar todo el tiempo que desee, lo que significa una muestra más grande, que debería ayudar con muestras más pequeñas.

La media de validación cruzada o jackknife será la misma que la media de la muestra, mientras que la media de arranque es muy poco probable que sea la misma que la media de la muestra.

Como la validación cruzada y la navaja pesan todos los puntos de muestra de la misma manera, deben tener un intervalo de confianza menor (aunque posiblemente incorrecto) que el bootstrap.

Neil McGuigan
fuente
2
Neil, parece que al menos 2 de 4 tus afirmaciones están equivocadas. 1. A pesar de que cada muestra boostrap particular cubre ~ 63% de los puntos de datos originales, si tomamos muestras de muchas (por ejemplo, 10k) muestras bootstrap como lo hacemos habitualmente, la posibilidad de que cada punto esté cubierto en al menos uno de ellos es esencialmente 100%. 2. Acabo de hacer una verificación numérica rápida: el promedio de las muestras bootstrap y fuera de bootstrap está muy cerca del promedio total de datos. Puede comprobarlo usted mismo
Kochede
Aquí hay un código (haga clic en "Editar" para verlo formateado): importe numpy como np, pandas como pd n = 1000 B = 1000 y = np.random.randn (n) significab, significaoob = [], [] para b en rango (B): ib = np.random.choice (n, n, replace = True) meanb = y [ib] .mean () significab.append (meanb) indoob = np.ones (n, dtype = bool) indoob [ib] = Falso meanoob = y [indoob] .mean () significaoob.append (meanoob) pd.Series (meansb) .hist (histtype = 'step') pd.Series (meansoob) .hist (histtype = 'step' ) imprimir np.mean (meansb), np.mean (meansoob), pd.Series (y) .mean ()
Kochede
@Kochede "esencialmente 100%" no es 100%. "Muy cerca del promedio" no es lo mismo que exactamente el promedio. Estás usando palabras de comadreja. No estoy equivocado
Neil McGuigan
Entonces, no solo das respuestas incorrectas, sino que también insistes en ellas con demagogia, está bien. La cobertura esperada de datos por muestras de bootstrap converge rápidamente al 100% con un número creciente de muestras. En el experimento anterior, después de menos de 10 muestras de arranque, todos los puntos de datos son alcanzados por el arranque. De manera similar, la expectativa del promedio de las muestras de bootstrap es igual a la media de la muestra. Y en el experimento anterior, después de 1000 muestras de bootstrap, la diferencia es inferior al 0.1% (use np.random.rand en lugar de randn, porque para randn la media es 0)
Kochede
Aquí está el código actualizado para su referencia: import numpy como np, pandas como pd; n = 1000; B = 1000; y = np.random.rand (n); significab = []; cubierto = np.zeros (n, dtype = bool); cobertura = []; #begin loop para b en el rango (B): ib = np.random.choice (n, n, replace = True); cubierto [ib] = Verdadero; cobertura.append (covered.sum () * 1.0 / n); meanb = y [ib] .mean (); meansb.append (meanb); #end cobertura de impresión de bucle [: 10]; print np.mean (meansb), pd.Series (y) .mean (); print (np.mean (meansb) - pd.Series (y) .mean ()) / pd.Series (y) .mean ();
Kochede
2

Estas son dos técnicas de remuestreo:

En la validación cruzada, dividimos los datos aleatoriamente en kfold y ayuda a sobreajustar, pero este enfoque tiene su inconveniente. Como usa muestras aleatorias, alguna muestra produce un error mayor. Para minimizar el CV tiene técnicas pero no es tan poderoso con problemas de clasificación. Bootstrap ayuda en esto, mejora el error de su propia prueba de muestra ... para más detalles, consulte ...

https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/cv_boot.pdf

Reeves
fuente