75 votos

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

A mí me parece que la validación del hold-out es inútil. Es decir, dividir el conjunto de datos original en dos partes (entrenamiento y prueba) y utilizar la puntuación de la prueba 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é utilizar la validación estándar de retención? ¿O incluso hablar de ella?

13 votos

¿por qué crees que es inútil? Puedes leer la sección 7 de Elementos de la teoría del aprendizaje estadístico para un análisis formal de sus pros y sus contras. Desde el punto de vista estadístico, k-fold es mejor, pero utilizar un conjunto de pruebas no es necesariamente malo. Intuitivamente, hay que tener en cuenta que un conjunto de pruebas (cuando se utiliza correctamente) es, de hecho, un conjunto de datos que tiene no se ha utilizado en absoluto en la formación. Así que es definitivamente útil en algún sentido para evaluar un modelo. Además, k-fold es súper caro, así que hold out es una especie de "aproximación" a lo que hace k-fold (pero para alguien con poca potencia de cálculo).

2 votos

Desde una perspectiva teórica, K-fold es más preciso, pero ligeramente más caro desde el punto de vista informático. La pregunta era: ¿por qué no hacer SIEMPRE la validación cruzada K-fold?

3 votos

Ya veo. Yo diría que la razón es casi siempre computacional. K-fold aproxima mejor el error de generalización, por lo que desde un punto de vista estadístico K-fold es el método de elección, creo. Hold-out es mucho más sencillo de implementar y no requiere entrenar tantos modelos. En la práctica, entrenar un modelo puede ser bastante caro.

61voto

cbeleites Puntos 12461

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

Conjuntos de pruebas independientes puede utilizarse para medir el rendimiento de la generalización que no puede medirse mediante el remuestreo o la validación de retención, por ejemplo, el rendimiento para casos futuros desconocidos (= casos que se miden más tarde, una vez finalizado el entrenamiento). Esto es importante para saber cuánto tiempo puede utilizarse un modelo existente para nuevos datos (piense, por ejemplo, en la deriva de los instrumentos). En términos más generales, esto puede describirse como la medición del rendimiento de la extrapolación para definir los límites de la aplicabilidad.

Otro escenario en el que el hold-out puede ser realmente beneficioso es: es muy fácil para asegurarse de que los datos de entrenamiento y de prueba están correctamente separados, lo que resulta mucho más fácil que para la validación por remuestreo: por ejemplo

  1. decidir la división (por ejemplo, hacer una asignación aleatoria de los casos)
  2. medir
  3. datos de medición y de referencia de los casos de formación => modelización 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. comparar las predicciones con la referencia de los 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 ningún dato de prueba se filtra en el proceso de modelado. En un segundo nivel, el modelo final y las mediciones de los casos de prueba podrían entregarse a otra persona, y así sucesivamente.

En algunos campos/casos/aplicaciones, consideramos que esta independencia obvia es lo suficientemente importante como para prescribir que un organización independiente es necesario para la validación*, por ejemplo, en la química clínica (también lo hacemos, por ejemplo, para la seguridad de los vehículos: el que asegura su coche no es el mismo que el que lo repara, y además están en negocios distintos).

(* Soy químico/químico analítico. Para mí, no hay mucha diferencia conceptual entre validar un método de laboratorio húmedo o un método in-silico (también conocido como modelo predictivo). Y la diferencia será aún menor con el avance del aprendizaje automático, por ejemplo, en el diagnóstico médico).

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

He aprendido mi lección sobre las fugas de datos para el remuestreo al retractarme de un manuscrito una semana después de su presentación cuando descubrí que tenía una fuga no detectada previamente (ejecutando pruebas de permutación al mismo tiempo) en mi procedimiento de división (error tipográfico en el cálculo del índice).

A veces, la retención puede ser más eficaz que encontrar a alguien que esté dispuesto a dedicar tiempo a comprobar el código de remuestreo (por ejemplo, para datos agrupados) con el fin de obtener el mismo nivel de certeza sobre los resultados. Sin embargo, en mi opinión, no suele ser eficaz hacerlo antes de llegar a la fase en la que se necesita medir, por ejemplo, el rendimiento futuro (primer punto), es decir, cuando se necesita establecer un experimento de validación para el modelo existente.

Por otra parte, en situaciones de muestras pequeñas, no hay opción: hay que mantener un número suficiente de casos de prueba para que los resultados sean lo suficientemente precisos como para llegar a la conclusión necesaria (recuerde: 3 casos de prueba correctos de 3 para la clasificación significa un intervalo de confianza binomial del 95% que se sitúa muy por debajo de 50:50). Frank Harrell señala la regla general de que se necesitan al menos unos 100 casos (de prueba) para que se pueda llegar a una conclusión. 100 casos (de prueba) para medir adecuadamente una proporción [como la fracción de casos correctamente predichos] 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 varios 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 un número de pacientes tiene varios especímenes de cada paciente y analiza un número de células de cada espécimen): se divide en el nivel más alto de la jerarquía de muestreo (por paciente). Pero puede tener factores de confusión independientes que no están anidados, por ejemplo, la variación diaria o la varianza causada por los diferentes experimentadores que realizan la prueba. En ese caso, debe asegurarse de que la división es independiente para todo los factores de confusión en el nivel más alto (los factores de confusión anidados serán automáticamente independientes). Tener en cuenta esto es muy difícil si algunos factores de confusión sólo se identifican durante el estudio, y el diseño y la realización de un experimento de validación pueden ser más eficientes que tratar con divisiones que casi no dejan datos ni para el entrenamiento ni para la prueba de los modelos sustitutos.

9 votos

Me gustaría poder dar más de +1 por esta respuesta tan completa. Me ha gustado especialmente que hayas mencionado tu problema con una fuga de datos, ya que ilustra eficazmente que puede no ser nada trivial descartar este tipo de problemas, incluso para los expertos. Es una buena prueba de realidad.

0 votos

¿No te estás haciendo la pregunta? Sí, la división es difícil, debido a los factores de confusión, pero es difícil independientemente de si se hace una validación simple o una validación cruzada k-fold, ¿no es así? (¡Gracias por una respuesta tan perspicaz!)

2 votos

@NilsvonBarth: No veo cómo mis argumentos son circulares: el PO pregunta "¿por qué [en absoluto] utilizar la validación de retención?", y yo doy un montón de razones prácticas. El uso estadísticamente más eficiente de un número limitado de casos no es siempre la propiedad más importante del diseño del estudio. (Aunque en mi experiencia a menudo lo es, debido al número extremadamente limitado de casos: Con mucha más frecuencia aconsejo la CV repetida/reiterada de k-fold en lugar de la hold-out). Para algunos factores de confusión físico La división es posible y fácil, y una forma muy eficaz de evitar las revisiones a hurtadillas. Quién sabe si encontraremos que doblemente ...

22voto

trish Puntos 31

NOTA : Esta respuesta es antigua, incompleta y está totalmente desfasada. Sólo era discutiblemente correcta cuando se publicó en 2014, y no estoy muy seguro de cómo consiguió tantos upvotes o cómo se convirtió en la respuesta aceptada. Recomiendo esta respuesta en su lugar, escrito por un experto en la materia (y con bastantes más upvotes). Dejo aquí mi respuesta sólo con fines históricos/de archivo.


Lo único que sé es que se puede hacer Hold-Out con tres horas de experiencia en programación; lo otro requiere una semana en principio y seis meses en la práctica.

En principio es sencillo, pero escribir el código es tedioso y requiere mucho tiempo. Como dijo Linus Torvalds: "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 se dedican a la estadística son malos programadores, sin tener la culpa de ello. Hacer una validación cruzada k-fold de manera eficiente (y con eso quiero decir, de una manera que no sea horriblemente frustrante de depurar y usar más de una vez) en R requiere una vaga comprensión de las estructuras de datos, pero las estructuras de datos son generalmente omitidas en los tutoriales de "introducción a la programación estadística". Es como la persona mayor que utiliza Internet por primera vez. En realidad no es difícil, sólo se necesita media hora más para entenderlo la primera vez, pero es nuevo y eso lo hace confuso, por lo que es fácil de ignorar.

Tienes preguntas como esta: Cómo implementar una validación de retención en R . Sin ánimo de ofender, en absoluto, al que pregunta. Pero mucha gente no sabe leer el código. El hecho de que la gente haga una validación cruzada es suficiente para alegrarme.

Parece una tontería y una trivialidad, pero esto viene de la experiencia personal, de haber sido ese tipo y de haber trabajado con muchas personas que lo eran.

24 votos

Tal vez como alguien que se ha especializado en CS tengo una visión ligeramente sesgada sobre esto, pero si se puede implementar la validación hold-out correctamente (que ya significa dividir el conjunto de datos en 2 partes y utilizar una para el entrenamiento y la otra para la prueba), lo único que hay que 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.

3 votos

@Voo: además, no basta con saber programar: hay que entender el problema lo suficientemente bien como para poder juzgar qué factores de confusión hay que tener en cuenta durante el procedimiento de división. Véase, por ejemplo stats.stackexchange.com/questions/20010/ . Creo que veo este tipo de problemas más a menudo que los problemas de codificación "puros" (aunque nunca se sabe: alguien que apenas es capaz de codificar una simple división de las filas de la matriz de datos suele cometer también el error de nivel superior de no dividir, por ejemplo, a nivel de paciente)

0 votos

Tenga en cuenta también que puede hacer una división adecuada (por ejemplo, paciente/día de medición/...) sin ninguna programación, separando los archivos que produce el instrumento de medición...

9voto

frast Puntos 1907

Podría ser útil aclarar un poco la terminología. Si dejamos que $k$ sea un número entero menor (o igual) que $n$ donde $n$ es el tamaño de la muestra y la dividimos en $k$ submuestras únicas, entonces lo que usted llama validación Hold-out es en realidad sólo 2 veces ( $k$ = 2) validación cruzada. La validación cruzada no es más que una herramienta para estimar las tasas de error fuera de la muestra (o la generalizabilidad) de un modelo concreto. La necesidad de estimar la tasa de error fuera de la muestra es habitual y ha dado lugar a toda una literatura. Véase, para empezar, el capítulo 7 de ESL .

Así que para responder a las preguntas:

  1. ¿Por qué hablar de ello? Pedagógicamente. Merece la pena pensar en la validación del Hold-out como un caso especial -y sólo ocasionalmente útil- de un método por lo demás bastante útil con muchísimas variantes.

  2. ¿Por qué utilizarlo? Si uno tiene la suerte de disponer de un conjunto de datos colosal (en términos de observaciones, $n$ ), entonces tiene sentido dividir los datos en dos, entrenando en una mitad y probando en la otra. Esto tiene sentido por razones computacionales, ya que todo lo que se requiere es ajustar una vez y predecir una vez (en lugar de $k$ veces). Y tiene sentido desde el punto de vista de la "estimación de muestras grandes", ya que se dispone de un montón de observaciones a las que ajustar el modelo.

Una regla de oro que he aprendido es: cuando $n$ es grande, $k$ puede ser pequeño, pero cuando $n$ es pequeño, $k$ debe estar cerca de $n$ .

20 votos

No creo que el holdout sea lo mismo que la validación de 2 pliegues, porque en la validación de 2 pliegues se ajustan dos modelos y luego se promedian los errores en los dos conjuntos de holdout.

8voto

jasonmray Puntos 1303

Si el procedimiento de selección y ajuste del modelo no puede codificarse porque es subjetivo, o lo es en parte, e implica la observación de gráficos y similares, lo mejor que se puede hacer es una validación a distancia. (Supongo que tal vez podría utilizar algo como Mechanical Turk en cada pliegue del CV, aunque nunca he oído hablar de su realización).

4voto

Indo Puntos 11

Todos estos son comentarios útiles. Sólo hay que tener en cuenta uno más. Cuando se tienen suficientes datos, el uso de 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 se utilizan otros procedimientos de validación cruzada se están evaluando metodologías (en las condiciones del problema) en lugar de modelos (metodología SVM, metodología CART, etc.).

Espero que esto sea útil.

i-Ciencias.com

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.

Powered by:

X