Me gustaría conocer tu opinión sobre las diferencias entre la validación cruzada y el bootstrapping para estimar el error de predicción.
¿Cuál funciona mejor para tamaños de conjunto de datos pequeños o grandes?
Me gustaría conocer tu opinión sobre las diferencias entre la validación cruzada y el bootstrapping para estimar el error de predicción.
¿Cuál funciona mejor para tamaños de conjunto de datos pequeños o grandes?
Se reduce a la varianza y al sesgo (como de costumbre). CV tiende a ser menos sesgado pero K-fold CV tiene una varianza bastante grande. Por otro lado, el bootstrap tiende a reducir drásticamente la varianza pero da resultados más sesgados (suelen ser pesimistas). Otros métodos de bootstrap se han adaptado para lidiar con el sesgo del bootstrap (como las reglas 632 y 632+).
Otros enfoques serían "Monte Carlo CV", también conocido como "leave-group-out CV", que hace muchas divisiones aleatorias de los datos (algo así como divisiones mini de entrenamiento y prueba). La varianza es muy baja para este método y el sesgo no es muy malo si el porcentaje de datos en la retención es bajo. Además, CV repetido hace K-fold varias veces y promedia los resultados de manera similar al K-fold regular. Soy más parcial a esto ya que mantiene el sesgo bajo y reduce la varianza.
Para tamaños de muestra grandes, los problemas de varianza se vuelven menos importantes y la parte computacional es más importante. Aún me quedaría con CV repetido para tamaños de muestra pequeños y grandes.
A continuación se muestra una investigación relevante (especialmente Kim y Molinaro).
Bengio, Y. & Grandvalet, Y. (2005). Sesgo en la estimación de la varianza de la validación cruzada de k-fold. Modelado estadístico y análisis para problemas de datos complejos, 75–95.
Braga-Neto, U. M. (2004). ¿Es válida la validación cruzada para clasificación de microarrays con muestras pequeñas Bioinformática, 20(3), 374–380. doi:10.1093/bioinformatics/btg419
Efron, B. (1983). Estimación de la tasa de error de una regla de predicción: mejora en la validación cruzada. Journal of the American Statistical Association, 316–331.
Efron, B. & Tibshirani, R. (1997). Mejoras en la validación cruzada: El método de bootstrap 632+. Journal of the American Statistical Association, 548–560.
Furlanello, C., Merler, S., Chemini, C. & Rizzoli, A. (1997). Una aplicación de la regla bootstrap 632+ a datos ecológicos. WIRN 97.
Jiang, W. & Simon, R. (2007). Una comparación de métodos de bootstrap y un enfoque de bootstrap ajustado para la estimación del error de predicción en la clasificación de microarrays. Estadísticas en Medicina, 26(29), 5320–5334.
Jonathan, P., Krzanowski, W. & McCarthy, W. (2000). Sobre el uso de la validación cruzada para evaluar el rendimiento en la predicción multivariante. Estadísticas y Computación, 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 bootstrap. Estadísticas Computacionales 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 selección de modelos. Conferencia Internacional Conjunta sobre Inteligencia Artificial, 14, 1137–1145.
Martin, J. & Hirschberg, D. (1996). Estadísticas de muestras pequeñas para tasas de error de clasificación I: Medidas de tasa de error.
Molinaro, A. M. (2005). Estimación del error de predicción: una comparación de métodos de remuestreo. Bioinformática, 21(15), 3301–3307. doi:10.1093/bioinformatics/bti499
Sauerbrei, W. & Schumacher1, M. (2000). Bootstrap y Validación Cruzada para Evaluar la Complejidad de Modelos de Regresión Dirigidos por Datos. Análisis de Datos Médicos, 26–28.
Tibshirani, RJ, & Tibshirani, R. (2009). Una corrección de sesgo para la tasa mínima de error en la validación cruzada. Documento de preimpresión de arXiv arXiv:0908.2904.
@Frank Harrell ha trabajado mucho en esta pregunta. No conozco referencias específicas.
Pero prefiero ver las dos técnicas como destinadas a diferentes propósitos. La validación cruzada es una buena herramienta cuando se decide sobre el modelo, ya que te ayuda a no engañarte pensando que tienes un buen modelo cuando en realidad estás sobreajustando.
Cuando tu modelo está fijo, entonces el uso del bootstrap tiene más sentido (al menos para mí).
Hay una introducción a estos conceptos (además de pruebas de permutación) utilizando R en http://www.burns-stat.com/pages/Tutor/bootstrap_resampling.html
Gracias por las respuestas. ¿Entonces pensé que el arranque era mejor cuando tienes un conjunto de datos pequeño (<30 obs). ¿No?
Creo que sí. La validación cruzada puede no ser razonable cuando se tiene un tamaño de muestra pequeño. Podrías hacer validación cruzada dejando uno fuera, pero tiende a ser demasiado optimista.
También hay que tener en cuenta que realizar el arranque con una muestra pequeña conducirá a algunas estimaciones sesgadas, como se señaló en el artículo original de Efron.
Una diferencia es que la validación cruzada, al igual que el jackknife, utiliza todos sus puntos de datos, mientras que el bootstrap, que re-muestrea sus datos de manera aleatoria, puede que no incluya todos los puntos.
Puede hacer bootstrap durante el tiempo que desee, lo que significa un resample más grande, lo cual 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 bootstrap es muy poco probable que sea la misma que la media de la muestra.
Dado que la validación cruzada y el jackknife ponderan todos los puntos de muestra por igual, deberían tener un intervalo de confianza más pequeño (aunque posiblemente incorrecto) que el bootstrap.
Neil, parece que al menos 2 de tus 4 afirmaciones son incorrectas. 1. Aunque cada muestra de bootstrap en particular cubre aproximadamente el 63% de los puntos de datos originales, si muestreamos muchas (por ejemplo, 10k) muestras de bootstrap como solemos hacer, la probabilidad de que cada punto esté cubierto en al menos una de ellas es esencialmente del 100%. 2. Acabo de hacer una verificación numérica rápida: el promedio de las muestras de bootstrap y fuera de bootstrap es muy cercano al promedio de todos los datos. Puedes comprobarlo tú mismo.
Aquí tienes un código (haz clic en "Editar" para verlo formateado): import numpy as np, pandas as pd n=1000 B=1000 y = np.random.randn( n ) meansb, meansoob = [], [] for b in range(B): ib = np.random.choice( n, n, replace=True ) meanb = y[ ib ].mean() meansb.append( meanb ) indoob = np.ones(n, dtype=bool) indoob[ ib ] = False meanoob = y[ indoob ].mean() meansoob.append( meanoob ) pd.Series( meansb ).hist( histtype='step' ) pd.Series( meansoob ).hist( histtype='step' ) print np.mean( meansb ), np.mean( meansoob ), pd.Series( y ).mean()
@ Kochede "esencialmente 100%" no es 100%. "Muy cerca del promedio" no es lo mismo que exactamente igual al promedio. Estás usando palabras sospechosas. No estoy equivocado.
Estas son dos técnicas de re-muestreo:
En la validación cruzada dividimos los datos aleatoriamente en kfold y ayuda a evitar el sobreajuste, pero este enfoque tiene sus inconvenientes. Debido a que utiliza muestras aleatorias, algunas muestras producen errores importantes. Para minimizar esto, la validación cruzada tiene técnicas, pero no es tan potente con problemas de clasificación. Bootstrap ayuda en esto, mejora el error a partir de su propia muestra... para más detalles, ver...
https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/cv_boot.pdf
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.