Validación de retención frente a validación cruzada

54

Para mí, parece que la validación de suspensión es inútil. Es decir, dividir el conjunto de datos original en dos partes (capacitación y evaluación) y usar el puntaje de evaluación como medida de generalización es algo inútil.

La validación cruzada K-fold parece dar mejores aproximaciones de generalización (ya que entrena y prueba en cada punto). Entonces, ¿por qué usaríamos la validación de retención estándar? ¿O incluso hablar de eso?

ameba dice Reinstate Monica
fuente
10
¿Por qué crees que es inútil? Puede leer la sección 7 de Elementos de la teoría del aprendizaje estadístico para obtener un análisis formal de sus ventajas y desventajas. Estadísticamente hablando, k-fold es mejor, pero usar un conjunto de prueba no es necesariamente malo. Intuitivamente, debe tener en cuenta que un conjunto de pruebas (cuando se usa correctamente) es de hecho un conjunto de datos que no se ha utilizado en absoluto en el entrenamiento. Por lo tanto, es definitivamente útil en algún sentido evaluar un modelo. Además, k-fold es muy costoso, por lo que esperar es una especie de "aproximación" a lo que hace k-fold (pero para alguien con bajo poder de cálculo).
Charlie Parker
Seguro. Desde una perspectiva teórica, K-fold es más preciso pero LIGERAMENTE más costoso computacionalmente. La pregunta era: ¿por qué no SIEMPRE hacemos la validación cruzada K-fold?
2
Veo. Yo diría que la razón es principalmente computacional. K-fold se aproxima mejor al error de generalización, así que desde un punto de vista estadístico, K-fold es el método de elección, creo. La suspensión es mucho más simple de implementar Y no requiere capacitación en muchos modelos. En la práctica, entrenar un modelo puede ser bastante costoso.
Charlie Parker
1
Correcto, pero creo que el argumento "demasiado costoso computacional" es bastante frágil. Casi todo el tiempo, nuestro objetivo es desarrollar los modelos más precisos. Sin embargo, existe esta paradoja en la que muchos de los experimentos realizados en la literatura solo tienen un único conjunto de validación de resistencia.
1
Pregunta: Los elementos de la teoría de aprendizaje estadístico sección 7.10.1 titulada "Validación cruzada K fold" parecen indicar que mantener los datos de la prueba completamente separados de los datos de entrenamiento (como en la validación extendida) es ideal, y la validación K-fold es solo un compromiso ya que los datos son muchas veces escasos. Todavía soy bastante nuevo en las estadísticas, ¿podría señalar cómo la validación cruzada es, de hecho, más precisa?
numX

Respuestas:

21

Mi única suposición es que puedes aguantar con tres horas de experiencia en programación; el otro lleva una semana en principio y seis meses en práctica.

En principio es simple, pero escribir código es tedioso y requiere mucho tiempo. Como Linus Torvalds dijo: "Los malos programadores se preocupan por el código. Los buenos programadores se preocupan por las estructuras de datos y sus relaciones". Muchas de las personas que hacen estadísticas son malos programadores, sin culpa propia. Hacer la validación cruzada k-fold de manera eficiente (y con eso quiero decir, de una manera que no es horriblemente frustrante depurar y usar más de una vez) en R requiere una comprensión vaga de las estructuras de datos, pero las estructuras de datos generalmente se omiten "introducción a la programación estadística "tutoriales. Es como la persona mayor que usa Internet por primera vez. Realmente no es difícil, solo toma media hora más o menos para darse cuenta la primera vez, pero es completamente nuevo y eso lo hace confuso, por lo que es fácil ignorarlo.

Usted tiene este tipo de preguntas: ¿Cómo implementar una validación de retención en R . Sin ánimo de ofender, en absoluto, al autor de la pregunta. Pero muchas personas simplemente no están alfabetizadas en códigos. El hecho de que la gente haga validación cruzada es suficiente para hacerme feliz.

Suena tonto y trivial, pero esto proviene de la experiencia personal, haber sido ese tipo y haber trabajado con muchas personas que eran ese tipo.

Shadowtalker
fuente
18
Tal vez como alguien que se especializó en CS tengo una visión ligeramente sesgada sobre esto, pero si puede implementar la validación de retención correctamente (lo que ya significa dividir el conjunto de datos en 2 partes y usar una para la capacitación y la otra para las pruebas), el Lo único que necesita cambiar es la proporción de la división y poner todo en un bucle. Parece difícil de creer que esto sea un gran problema.
Voo
3
@Voo: además, poder programar no es suficiente aquí: debe comprender el problema lo suficientemente bien como para poder juzgar qué factores de confusión debe tener en cuenta durante su procedimiento de división. Ver, por ejemplo, stats.stackexchange.com/questions/20010/… . Creo que veo este tipo de problemas con más frecuencia que los problemas de codificación "pura" (aunque uno nunca sabe: alguien que apenas puede codificar una división simple de las filas en la matriz de datos generalmente también cometerá el error de nivel superior de no dividir por ejemplo, a nivel del paciente)
cbeleites apoya a Monica el
Tenga en cuenta también que se puede hacer adecuados (por ejemplo, el paciente / día de medición / ...) atraco a cabo sin ningún tipo de división de programación en todos separando los archivos del instrumento de medición produce ...
cbeleites apoya Mónica
55
Para los votantes que votaron: tenga en cuenta que hice una pregunta por separado que cuestiona mi lógica. stats.stackexchange.com/q/108345/36229
shadowtalker
1
No creo que la respuesta que explique la diferencia entre dos métodos de validación cruzada deba ser tiempo humano para aprender, sesgada de manera absurda y no útil
rgalbo
40

La suspensión se usa a menudo como sinónimo de validación con un conjunto de pruebas independiente, aunque existen diferencias cruciales entre dividir los datos al azar y diseñar un experimento de validación para pruebas independientes.

Se pueden usar conjuntos de pruebas independientes para medir el rendimiento de generalización que no se puede medir mediante muestreo o validación de espera, por ejemplo, el rendimiento para casos futuros desconocidos (= casos que se miden más tarde, después de que finalice la capacitación). Esto es importante para saber cuánto tiempo se puede usar un modelo existente para nuevos datos (piense, por ejemplo, en la deriva del instrumento). En términos más generales, esto puede describirse como la medición del rendimiento de extrapolación para definir los límites de aplicabilidad.

Otro escenario en el que la retención puede ser realmente beneficiosa es: es muy fácil asegurarse de que los datos de entrenamiento y prueba estén separados adecuadamente, mucho más fácil que para la validación de remuestreo: por ejemplo

  1. decidir la división (p. ej., asignación aleatoria de casos)
  2. medida
  3. Los datos de medición y referencia de los casos de entrenamiento => modelado \ ni las mediciones ni la referencia de los casos de prueba se entregan a la persona que modela.
  4. modelo final + mediciones de los casos retenidos => predicción
  5. compare las predicciones con la referencia para casos retenidos.

Dependiendo del nivel de separación que necesite, cada paso puede ser realizado por otra persona. Como primer nivel, no entregar ningún dato (ni siquiera las mediciones) de los casos de prueba al modelador permite estar muy seguro de que no se filtre ningún dato de prueba en el proceso de modelado. En un segundo nivel, el modelo final y las medidas del caso de prueba podrían entregarse a otra persona, y así sucesivamente.

Sí, paga por la menor eficiencia de las estimaciones de retención en comparación con la validación de remuestreo. Pero he visto muchos documentos en los que sospecho que la validación de remuestreo no separa correctamente los casos (en mi campo tenemos muchos datos agrupados / jerárquicos / agrupados).

Aprendí mi lección sobre fugas de datos para volver a muestrear retrayendo un manuscrito una semana después del envío cuando descubrí que tenía una fuga previamente no detectada (al ejecutar pruebas de permutación) en mi procedimiento de división (error tipográfico en el cálculo del índice).

A veces, la retención puede ser más eficiente que encontrar a alguien que esté dispuesto a dedicar tiempo para verificar el código de remuestreo (por ejemplo, para datos agrupados) para obtener el mismo nivel de certeza sobre los resultados. Sin embargo, en mi humilde opinión, generalmente no es eficiente hacer esto antes de que se encuentre en la etapa en la que de todos modos necesita medir, por ejemplo, el rendimiento futuro (primer punto), en otras palabras, cuando de todos modos necesita configurar un experimento de validación para el modelo existente.

OTOH, en situaciones de tamaño de muestra pequeño, la retención no es una opción: necesita mantener suficientes casos de prueba para que los resultados de la prueba sean lo suficientemente precisos como para permitir la conclusión necesaria (recuerde: 3 de los 3 casos de prueba correctos para la clasificación significa un intervalo de confianza binomial del 95% que oscila muy por debajo de 50:50 ¡adivinando!) Frank Harrell señalaría la regla general de que al menos ca. Se necesitan 100 casos (de prueba) para medir adecuadamente una proporción [como la fracción de casos pronosticados correctamente] con una precisión útil.


Actualización: hay situaciones en las que la división adecuada es particularmente difícil de lograr, y la validación cruzada se vuelve inviable. Considere un problema con una serie de factores de confusión. La división es fácil si estos factores de confusión están estrictamente anidados (por ejemplo, un estudio con varios pacientes tiene varias muestras de cada paciente y analiza una cantidad de células de cada muestra): se divide en el nivel más alto de la jerarquía de muestreo (según el paciente) . Pero es posible que tenga factores de confusión independientes que no están anidados, por ejemplo, variación diaria o variación causada por diferentes experimentadores que ejecutan la prueba. Luego debe asegurarse de que la división sea independiente para todosfactores de confusión en el nivel más alto (los factores de confusión anidados serán automáticamente independientes). Cuidar esto es muy difícil si algunos factores de confusión solo se identifican durante el estudio, y diseñar y realizar un experimento de validación puede ser más eficiente que lidiar con divisiones que casi no dejan datos ni para entrenamiento ni para pruebas de los modelos sustitutos.

cbeleites apoya a Monica
fuente
66
Desearía poder dar más de +1 por esta respuesta tan completa. Me gustó especialmente que mencione su problema con una fuga de datos, ya que ilustra de manera efectiva que puede estar lejos de ser trivial para descartar tales problemas, incluso para los expertos. Esta es una buena prueba de realidad!
Marc Claesen
¿No estás rogando la pregunta? Sí, la división es difícil, debido a los factores de confusión, pero es difícil independientemente de si está haciendo una validación de retención única o una validación cruzada k-fold, ¿no es así? (¡Gracias por una respuesta perspicaz independientemente!)
Nils von Barth
1
@NilsvonBarth: No veo cómo mis argumentos son circulares: el OP pregunta "por qué [en absoluto] usa la validación de retención", y doy un montón de razones prácticas. El uso estadísticamente más eficiente de un número limitado de casos no siempre es la propiedad más importante del diseño del estudio. (Aunque en mi experiencia a menudo lo es, debido a los números de casos extremadamente limitados: estoy aconsejando mucho más a menudo que se repita / repita el CV de plegado en k en lugar de esperar). Para algunos factores de confusión, la división física es posible y fácil, y una forma muy eficiente de evitar las vistas previas furtivas. Quién sabe si lo encontraremos doblemente ...
cbeleites apoya a Monica
¿Puede ser necesario un análisis de datos estadísticos cegado frente a demasiados documentos falsos positivos en algún momento?
cbeleites apoya a Monica
2
@NilsvonBarth: Cuidado con la resistencia que garantiza la independencia: es fácil implementar la resistencia de esa manera (mediante la retención física de los casos, es decir, las muestras de prueba se guardan y solo se miden una vez finalizado el entrenamiento del modelo), pero a menudo el término retención se usa para lo que en realidad es mucho más como una división aleatoria de los datos, ¡y todas las posibilidades de cometer errores en la división también se pueden hacer con la retención!
cbeleites apoya a Monica
8

knnkk

Entonces para responder las preguntas:

  1. ¿Por qué hablar de eso? Pedagógicamente Vale la pena pensar en la validación Hold-out como un caso especial, y solo ocasionalmente útil, de un método que de otra manera sería bastante útil con muchas, muchas variaciones.

  2. nk

nknkn

Zoë Clark
fuente
13
No creo que la retención sea igual a la validación 2 veces, porque en la validación 2 veces se ajustarán dos modelos y luego se promediarán los errores en los dos conjuntos de espera.
Alex
8

Si su procedimiento de selección y ajuste de modelo no puede codificarse porque es subjetivo, o en parte, involucrando la observación de gráficos y similares, la validación de retención podría ser lo mejor que puede hacer. (Supongo que tal vez podrías usar algo como Mechanical Turk en cada doblez de CV, aunque nunca he oído que se haga).

Scortchi - Restablece a Monica
fuente
6

Solo quería agregar algunas pautas simples que Andrew Ng mencionó en nuestra clase CS 229 en Stanford con respecto a la validación cruzada. Estas son las prácticas que sigue en su propio trabajo.

mm20

20<m100km

100<m1,000,000(k=5)m>10,000

m1,000,000(k=5)

Oscilación Isopícnica
fuente
5

Respuesta corta:

k=5

  • modelos complejos
  • resultados finales que deben cumplir restricciones de validez

Puede relajar esto para:

  • entrenamiento en conjuntos de datos realmente grandes
  • entrenamiento de modelos simples
  • creación de prototipos cuando el tiempo es un problema

Algunos de ustedes mencionaron que programar esto en R podría ser un problema. Le recomiendo que eche un vistazo al paquete "mlr" . Envuelve diferentes paquetes en una interfaz unificada, y también proporciona métodos de muestreo y evaluación de rendimiento realmente avanzados.

Echa un vistazo: http://mlr-org.github.io/mlr-tutorial/release/html/resample/ y: http://mlr-org.github.io/mlr-tutorial/release/html/performance/ index.htm

Alguna explicación más: lo que CV realmente hace es romper la compensación de la variación de sesgo:

Ahora, el problema que ambos enfoques intentan resolver es estimar el error de generalización, que está condicionado a los datos que se usaron para entrenar un modelo.

Holdout tiene un problema con sesgo y varianza:

Al reducir la cantidad de datos que probamos, introducimos una variación en nuestro error de generalización estimado, ya que los datos de prueba podrían no representar muy bien la distribución subyacente. Sin embargo, esto no introduce un sesgo, ya que se espera que el rendimiento estimado sea correcto.

Sin embargo, hacer que el conjunto de entrenamiento sea más pequeño introduce un sesgo pesimista, ya que nuevamente la distribución subyacente no está bien representada en los datos y el modelo tampoco puede ajustarse a los datos. Hacer que el conjunto de entrenamiento sea muy pequeño también introduce variaciones.

Como el tamaño del entrenamiento y el conjunto de pruebas se determinan entre sí, esto nos deja con una compensación: sesgo pesimista versus alta varianza.

kk1k

La validación cruzada es especialmente importante para los alumnos más complejos (alta varianza). Por lo general, también son más caros computacionalmente, lo que puede hacer que todo el proceso requiera mucho tiempo.

gcsk
fuente
3

Todos estos son comentarios útiles. Solo toma uno más en cuenta. Cuando tiene suficientes datos, usar Hold-Out es una forma de evaluar un modelo específico (un modelo SVM específico, un modelo CART específico, etc.), mientras que si usa otros procedimientos de validación cruzada, está evaluando metodologías (bajo las condiciones de su problema) ) en lugar de modelos (metodología SVM, metodología CART, etc.).

Espero que esto sea útil!

Indo
fuente
3

Modelar con datos serios en el tiempo es una excepción para mí. K fold no puede funcionar en algunos casos cuando necesita predecir el futuro en función de los datos anteriores. Los conjuntos de pruebas tienen que ser los datos futuros, y nunca puedes tocarlos en la fase de entrenamiento. ex predicción de venta o el mercado de valores. Aguantar es útil en esos casos.

Qian Liu
fuente
Tiempo de datos serios?
nbro
3

Simplemente pon; hora. Validación cruzada ejecuta la rutina de entrenamiento k veces (es decir, una vez para cada conjunto de resistencia). Si tiene datos grandes, entonces podría llevar muchas horas o incluso días entrenar el modelo para un solo conjunto de datos, por lo que debe multiplicarlo por k cuando use la validación cruzada.

Entonces, aunque la validación cruzada es el mejor método, en ciertas circunstancias no es factible, y el tiempo que tomaría podría haberse empleado mejor modelando los datos de diferentes maneras, o probando diferentes funciones de pérdida para obtener un mejor modelo.

Mi preferencia personal es tomar datos de validación de todo el conjunto de datos, por lo que, en lugar de tomar una sola porción del 10% de la cabeza o la cola de los datos, tomo el 2% de 5 puntos en el conjunto de datos. Eso hace que los datos de validación sean un poco más representativos de los datos en su conjunto.

BigBadMe
fuente
Aunque es una vieja pregunta y una nueva respuesta, estoy votando porque cuestiona la afirmación infundada de que "K-fold es más preciso pero LIGERAMENTE más costoso computacionalmente", que las otras respuestas ignoraban o pasaban demasiado rápido.
The Laconic
0

Cabe señalar que no siempre es posible aplicar la validación cruzada. Considere los conjuntos de datos dependientes del tiempo, de modo que desee utilizar los datos históricos para entrenar un modelo predictivo para el comportamiento futuro. En este caso, debe aplicar la validación de suspensión.

Elahe Naserian
fuente
2
En este caso, debe hacer la validación hacia adelante.
Neil G