¿Cuál es la diferencia entre el conjunto de prueba y el conjunto de validación?

431

Encontré esto confuso cuando uso la caja de herramientas de red neuronal en Matlab.
Dividió el conjunto de datos sin procesar en tres partes:

  1. conjunto de entrenamiento
  2. conjunto de validación
  3. equipo de prueba

Noto que en muchos algoritmos de entrenamiento o aprendizaje, los datos a menudo se dividen en 2 partes, el conjunto de entrenamiento y el conjunto de prueba.

Mis preguntas son:

  1. ¿Cuál es la diferencia entre el conjunto de validación y el conjunto de prueba?
  2. ¿El conjunto de validación es realmente específico para la red neuronal? O es opcional.
  3. Para ir más allá, ¿hay alguna diferencia entre la validación y las pruebas en el contexto del aprendizaje automático?
xiaohan2012
fuente
56
La pregunta se responde en el libro Elementos del aprendizaje estadístico, página 222. El conjunto de validación se utiliza para la selección del modelo, el conjunto de prueba para el error de predicción del modelo final (el modelo que se seleccionó mediante el proceso de selección).
mpiktas
@mpiktas ¿Se refiere al capítulo "Evaluación y selección de modelos"?
Celdor
2
Si. El número de página era de la 5ta edición impresa.
mpiktas
13
@mpiktas es perfecto. Aquí está el texto real:The training set is used to fit the models; the validation set is used to estimate prediction error for model selection; the test set is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.
Arun
1
También me gusta la explicación de Jason Brownlee .
delrocco

Respuestas:

254

Normalmente para realizar un aprendizaje supervisado, necesita dos tipos de conjuntos de datos:

  1. En un conjunto de datos (su "estándar de oro") tiene los datos de entrada junto con la salida correcta / esperada. Este conjunto de datos generalmente está debidamente preparado por humanos o mediante la recopilación de algunos datos de forma semiautomatizada. Pero es importante que tenga el resultado esperado para cada fila de datos aquí, porque lo necesita para el aprendizaje supervisado.

  2. Los datos a los que va a aplicar su modelo. En muchos casos, estos son los datos que le interesan para la salida de su modelo y, por lo tanto, todavía no tiene ninguna salida "esperada".

Mientras realiza el aprendizaje automático, hace lo siguiente:

  1. Fase de entrenamiento: presenta sus datos de su "estándar de oro" y entrena su modelo, combinando la entrada con la salida esperada.
  2. Fase de validación / prueba: para estimar qué tan bien se ha entrenado su modelo (que depende del tamaño de sus datos, el valor que desea predecir, ingresar, etc.) y estimar las propiedades del modelo (error medio para predictores numéricos, errores de clasificación para clasificadores, recuperación y precisión para modelos IR, etc.)
  3. Fase de aplicación: ahora aplica su modelo recién desarrollado a los datos del mundo real y obtiene los resultados. Como normalmente no tiene ningún valor de referencia en este tipo de datos (de lo contrario, ¿por qué necesitaría su modelo?), Solo puede especular sobre la calidad de la salida de su modelo utilizando los resultados de su fase de validación.

La fase de validación a menudo se divide en dos partes :

  1. En la primera parte, solo mira sus modelos y selecciona el enfoque de mejor rendimiento utilizando los datos de validación (= validación)
  2. Luego estima la precisión del enfoque seleccionado (= prueba).

De ahí la separación al 25/25/25.

En caso de que no necesite elegir un modelo apropiado de varios enfoques rivales, puede volver a particionar su conjunto para que básicamente solo tenga un conjunto de entrenamiento y un conjunto de prueba, sin realizar la validación de su modelo entrenado. Yo personalmente los particiono 70/30 entonces.

Ver también esta pregunta .

Alexander Galkin
fuente
21
¿Por qué no elegiría el modelo con mejor rendimiento basado en el conjunto de prueba, deshaciéndome del conjunto de validación?
Sebastian Graf
44
¿Es por sobreajuste? ¿O porque queremos algunas estadísticas independientes basadas en el resultado de la prueba, solo para la estimación de errores?
Sebastian Graf
12
@Sebastian [Si solo usa el conjunto de prueba:] "El error del conjunto de prueba del modelo de elección final subestimará el error de prueba verdadero, a veces significativamente" [Hastie et al]
user695652
23
El conjunto de validación se usa a menudo para ajustar hiperparámetros. Por ejemplo, en la comunidad de aprendizaje profundo, ajustar el tamaño de la capa de red, el número de unidad oculto, el término de regularización (ya sea L1 o L2) depende del conjunto de validación
xiaohan2012
2
¿Cuál es la forma correcta de dividir los conjuntos? ¿Debería la selección ser aleatoria? ¿Qué pasa si tienes fotos que son similares? ¿No dañará esto tu habilidad para generalizar? Si tiene dos conjuntos tomados en ubicaciones separadas, ¿no sería mejor tomar uno como conjunto de entrenamiento y el otro como conjunto de prueba?
Yonatan Simson
263

Conjunto de entrenamiento: un conjunto de ejemplos utilizados para el aprendizaje: para ajustar los parámetros del clasificador En el caso del Perceptrón Multicapa (MLP), usaríamos el conjunto de entrenamiento para encontrar los pesos "óptimos" con la regla de respaldo

Conjunto de validación: un conjunto de ejemplos utilizados para ajustar los parámetros de un clasificador En el caso de MLP, usaríamos el conjunto de validación para encontrar el número "óptimo" de unidades ocultas o determinar un punto de parada para el algoritmo de propagación inversa

Conjunto de pruebas: un conjunto de ejemplos utilizados solo para evaluar el rendimiento de un clasificador completamente entrenado En el caso de MLP, usaríamos la prueba para estimar la tasa de error después de haber elegido el modelo final (tamaño de MLP y pesos reales) Después de evaluar el modelo final en el conjunto de prueba, ¡NO DEBE ajustar el modelo más!

¿Por qué separar los conjuntos de prueba y validación? La estimación de la tasa de error del modelo final en los datos de validación estará sesgada (más pequeña que la tasa de error real) ya que el conjunto de validación se usa para seleccionar el modelo final Después de evaluar el modelo final en el conjunto de prueba, NO DEBE ajustar el modelo. ¡promover, adicional!

fuente: Introducción al análisis de patrones, Ricardo Gutiérrez-OsunaTexas A&M University, Texas A&M University

Mohsen Najafzadeh
fuente
42
+1 para "¡NO DEBE ajustar el modelo más!"
stmax
66
¿Cuál es la diferencia entre "ajustar los parámetros" y "ajustar los parámetros"?
Metariat
18
@stmax Para no ser pedante, pero una vez que tenemos nuestro error de prueba final y NO estamos satisfechos con el resultado, ¿qué hacemos si no podemos ajustar nuestro modelo más? ... A menudo me he preguntado sobre este caso.
Spacey
55
@Tarantula puede continuar ajustando el modelo, pero tendrá que recopilar un nuevo conjunto de prueba. Por supuesto, nadie hace eso;) pero violar eso (especialmente cuando lo repite varias veces) podría llevar a que su modelo se ajuste al conjunto de prueba, lo que resulta en puntajes poco realistas / demasiado optimistas.
stmax
44
Creo que esta nomenclatura es confusa. Está en lo correcto al decir "NO DEBE ajustar el modelo más" después de usar el equipo de prueba, pero ... ¿qué área quería hacer? ¿Dejar de trabajar en eso? En realidad, necesita una jerarquía completa de conjuntos de pruebas. 1: Conjunto de validación: utilizado para ajustar un modelo, 2: Conjunto de prueba, utilizado para evaluar un modelo y ver si debe volver al tablero de dibujo, 3: Conjunto de superprueba, utilizado en el algoritmo final-final para ver cómo bueno, es 4: conjunto de hiperpruebas, utilizado después de que los investigadores hayan estado desarrollando algoritmos MNIST durante 10 años para ver cuán locamente sobreadaptados están ... etc. etc.
Timmmm
66

Mis 5 años de experiencia en informática me enseñaron que nada es mejor que la simplicidad.

El concepto de conjuntos de datos de 'entrenamiento / validación cruzada / prueba' es tan simple como este. Cuando tiene un conjunto de datos grande, se recomienda dividirlo en 3 partes:

++ Conjunto de entrenamiento (60% del conjunto de datos original): Esto se utiliza para construir nuestro algoritmo de predicción. Nuestro algoritmo intenta sintonizarse con las peculiaridades de los conjuntos de datos de entrenamiento. En esta fase, generalmente creamos múltiples algoritmos para comparar sus rendimientos durante la Fase de Validación Cruzada.

++ Conjunto de validación cruzada (20% del conjunto de datos original): este conjunto de datos se utiliza para comparar el rendimiento de los algoritmos de predicción que se crearon en función del conjunto de entrenamiento. Elegimos el algoritmo que tiene el mejor rendimiento.

++ Conjunto de prueba (20% del conjunto de datos original): ahora hemos elegido nuestro algoritmo de predicción preferido, pero aún no sabemos cómo funcionará con datos del mundo real completamente invisibles. Por lo tanto, aplicamos nuestro algoritmo de predicción elegido en nuestro conjunto de pruebas para ver cómo funcionará para poder tener una idea sobre el rendimiento de nuestro algoritmo en datos no vistos.

Notas:

-Es muy importante tener en cuenta que no se recomienda omitir la fase de prueba, porque el algoritmo que funcionó bien durante la fase de validación cruzada realmente no significa que sea realmente el mejor, porque los algoritmos se comparan en función de la cruz -conjunto de validación y sus peculiaridades y ruidos ...

-Durante la fase de prueba, el propósito es ver cómo nuestro modelo final se enfrentará en la naturaleza, por lo que en caso de que su rendimiento sea muy bajo, debemos repetir todo el proceso a partir de la fase de capacitación.

innovIsmail
fuente
1
Es fácil y confuso referirse a los conjuntos como fases y viceversa.
Matt O'Brien
2
@innovIsmail ¿Qué sucede si me salto el paso de validación? Digamos que tengo muchos algoritmos y los entrené en el conjunto de trenes, luego los aplico todos al conjunto de prueba, luego elijo el que tiene el mejor rendimiento en el conjunto de prueba
KevinKim
3
A mí me parece que estás saltando el paso de prueba.
Mihai Danila
1
> compare el rendimiento de los algoritmos de predicción: ¿qué es "un algoritmo" en este contexto? ¿No es tu modelo un algoritmo? ¿Uno tiene que construir varios modelos y entrenarlos por separado para obtener varias fases para validar?
Boppity Bop
2
Esta simplicidad es una ilusión porque en la situación de tamaño de muestra no enorme se obtendrán algoritmos predictivos y resultados de validación sustancialmente diferentes si se repitieran las divisiones aleatorias.
Frank Harrell
33

En cada paso que se le pida que tome una decisión (es decir, elija una opción entre varias opciones), debe tener un conjunto / partición adicional para medir la precisión de su elección para que no elija simplemente el resultado más favorable de la aleatoriedad y confundir el final de la distribución con el centro 1 . La izquierda es la pesimista. El derecho es el optimista. El centro es el pragmático. Sé el pragmático.

ingrese la descripción de la imagen aquí

Paso 1) Entrenamiento: cada tipo de algoritmo tiene sus propias opciones de parámetros (el número de capas en una red neuronal, el número de árboles en un bosque aleatorio, etc.). Para cada uno de sus algoritmos, debe elegir una opción. Por eso tienes un set de entrenamiento.

Paso 2) Validación: ahora tiene una colección de algoritmos. Debes elegir un algoritmo. Es por eso que tienes un conjunto de prueba. La mayoría de las personas elige el algoritmo que funciona mejor en el conjunto de validación (y eso está bien). Pero, si no mide la tasa de error de su algoritmo de alto rendimiento en el conjunto de prueba, y simplemente va con su tasa de error en el conjunto de validación, entonces ha confundido ciegamente el "mejor escenario posible" con el "escenario más probable". Esa es una receta para el desastre.

Paso 3) Prueba: supongo que si sus algoritmos no tuvieran ningún parámetro, entonces no necesitaría un tercer paso. En ese caso, su paso de validación sería su paso de prueba. Quizás Matlab no le pida parámetros o haya elegido no usarlos y esa es la fuente de su confusión.

1 A menudo es útil entrar en cada paso con el supuesto (hipótesis nula) de que todas las opciones son iguales (por ejemplo, todos los parámetros son iguales o todos los algoritmos son iguales), de ahí mi referencia a la distribución.

2 Esta imagen no es mía. Lo he tomado de este sitio: http://www.teamten.com/lawrence/writings/bell-curve.png

Ryan Zotti
fuente
3
Creo que la primera oración captura la respuesta fundamental a esta pregunta mejor que cualquiera de las otras respuestas. "En cada paso que se le pida que tome una decisión (es decir, elija una opción entre varias opciones), debe tener un conjunto / partición adicional para medir la precisión de su elección ..."
kobejohn
En cuestión: si quiero encontrar el mejor RandomForest (RF) y pretender que solo hay un hiperparámetro de RF, que es la cantidad de árboles (N), entonces en el paso 1, ejecuto muchas RF con diferentes N para construir el bosque ; en el paso 2, aplíquelos en la prueba de validación y seleccione la RF con N * que da el error más bajo sobre la prueba de validación, luego en el paso 3, aplico RF con N * al conjunto de prueba y obtengo una estimación imparcial del error de prueba verdadero de esta RF con NORTE*. Pero podría aplicar todos mis RF en el conjunto de prueba y elegir el que tenga el error de prueba más bajo, que puede no ser N *. Entonces ese es el punto de hacer la validación paso2?
KevinKim
1
@KevinKim: si aplica su conjunto de pruebas a todas las RF y utiliza los resultados para hacer una elección adicional (elija otro modelo), entonces acaba de repetir el paso de validación. Usted ha decidido "Necesito obtener el error más bajo con un modelo". Ese es el punto de entrenamiento y validación, NO pruebas. Las pruebas son solo acerca de: he entrenado y elegido un modelo, ahora veamos cómo funciona "en general". Obviamente, el conjunto de prueba "general" es solo otra porción de datos que puede o no estar sobreajustada, pero el punto es que USTED no ha sobreajustado su modelo a sabiendas mediante elecciones.
Honeybear
La división entre tres es solo un enfoque muy común (A) para darle una idea de cómo el modelo generaliza (B) con un esfuerzo limitado y (C) datos observados limitados. Si desea mejorar en términos de (B), puede hacer lo que sugiere: utilizar diferentes conjuntos de validación para ajustar la generalización. Con datos limitados que se llama validación cruzada: repita el entrenamiento y la validación con diferentes conjuntos de entrenamiento y prueba (para redes neuronales donde el entrenamiento puede llevar semanas, esto no es una cosa).
Honeybear
1
PERO: todavía se desconoce cómo funcionará el modelo "en el mundo real". Es solo una suposición validada y probada, que funcionará bien en datos invisibles y para fines científicos esto generalmente se considera suficiente. Si ahora vuelve y genera y elige modelos, hasta que uno se ajuste perfectamente al conjunto de validación Y al conjunto de prueba, entonces degeneró su conjunto de prueba en un conjunto de validación. Mejor hacer validación cruzada para eso. En caso de que su rendimiento sea constantemente significativamente peor en el conjunto de prueba, siempre es una opción que sus datos se dividan mal y desee reiniciar con conjuntos reorganizados.
Honeybear
21

No se deduce que deba dividir los datos de ninguna manera. El programa de arranque puede proporcionar estimaciones de error cuadrático medio más pequeñas de precisión de predicción utilizando toda la muestra para desarrollar y probar el modelo.

Frank Harrell
fuente
1
¿Entonces no defiende la validación cruzada mediante la división de grandes conjuntos de datos para la prueba / validación de modelos predictivos?
OFish
99
No, a menos que el conjunto de datos sea enorme o la señal: la relación de ruido sea alta. La validación cruzada no es tan precisa como el bootstrap en mi experiencia, y no utiliza todo el tamaño de la muestra. En muchos casos, debe repetir la validación cruzada 50-100 veces para lograr la precisión adecuada. Pero en sus conjuntos de datos tienen más de 20,000 temas, los enfoques simples como la validación de muestras divididas a menudo están bien.
Frank Harrell
2
Eso es realmente bueno saberlo! Gracias. Y viniendo de ti, esa es una gran "fuente" de información. ¡Salud!
OFish
1
La validación de muestras divididas a menudo funciona peor que el arranque riguroso. Cree un aspecto de arranque externo que repita todos los pasos de aprendizaje supervisados ​​(todos los pasos que usan Y). El bootstrap de optimismo de Efron-Gong estima cuánto se desmorona el modelo predictivo en datos no vistos por el algoritmo, sin retener los datos.
Frank Harrell
1
Sí, con énfasis en repetir . Es la división individual lo que es problemático.
Frank Harrell
13

Una tarea típica de aprendizaje automático se puede visualizar como el siguiente ciclo anidado:

while (error in validation set > X) {
    tune hyper-parameters
    while (error in training set > Y) {
        tune parameters
    }
}

Típicamente, el bucle externo es realizado por humanos , en el conjunto de validación , y el bucle interno por máquina , en el conjunto de entrenamiento . Luego necesita un tercer conjunto de pruebas para evaluar el rendimiento final del modelo.

En otras palabras, el conjunto de validación es el conjunto de entrenamiento para humanos.

Yu Zhou
fuente
9

Una forma de pensar en estos tres conjuntos es que dos de ellos ( trainingy validation) provienen del pasado, mientras que el testconjunto proviene del "futuro". El modelo debe construirse y ajustarse utilizando datos del "pasado" ( training/validation datos), pero nunca testdatos que provienen del "futuro".

Para dar un ejemplo práctico, digamos que estamos construyendo un modelo para predecir qué tan bien les irá a los jugadores de béisbol en el futuro. Usaremos datos de 1899-2014 para crear testy validationestablecer. Una vez que el modelo se construye y se ajusta a esos datos, utilizaremos los datos de 2015 (¡en realidad en el pasado!) Como un conjunto de prueba, que desde la perspectiva del modelo aparece como datos "futuros" y de ninguna manera influyó en la creación del modelo . (Obviamente, en teoría, ¡podríamos esperar los datos de 2016 si realmente queremos!)

Obviamente estoy usando citas en todas partes, porque el orden temporal real de los datos puede no coincidir con el futuro real (por definición, toda la generación de datos probablemente tuvo lugar en el pasado real). En realidad, el testconjunto podría ser simplemente datos del mismo período de tiempo que los training/ validationsets, que "espera". De esta manera, no tuvo influencia en el ajuste del modelo, pero esos datos no provienen del futuro.

thecity2
fuente
44
¡Después de leer todas las otras respuestas, esta respuesta me hizo "clic"! Entrena con el conjunto de trenes, verifica que no esté sobreajustando con el conjunto de validación (y que el modelo y los hiperparámetros funcionan con "datos desconocidos"), y luego evalúa con el conjunto de prueba - "nuevos datos" - si ahora tener poderes predictivos ..!
stolsvik
Esta es una manera justa de verlo en el sentido de que los testdatos nunca deberían ser parte del proceso de capacitación: y si los tratamos como datos "futuros", se convierte en un error imposible de cometer.
javadba
7

La mayoría de los algoritmos de minería de datos supervisados ​​siguen estos tres pasos:

  1. El conjunto de entrenamiento se utiliza para construir el modelo. Contiene un conjunto de datos que tiene variables objetivo y predictoras preclasificadas.
  2. Por lo general, se utiliza un conjunto de datos o conjunto de pruebas para evaluar qué tan bien funciona el modelo con datos fuera del conjunto de entrenamiento. El conjunto de prueba contiene los datos de resultados preclasificados, pero no se utilizan cuando los datos del conjunto de pruebas se ejecutan a través del modelo hasta el final, cuando los datos preclasificados se comparan con los resultados del modelo. El modelo se ajusta para minimizar el error en el conjunto de prueba.
  3. Se utiliza otro conjunto de datos o conjunto de validación para evaluar el modelo ajustado en el paso 2 donde, nuevamente, los datos del conjunto de validación se ejecutan contra el modelo ajustado y los resultados se comparan con los datos preclasificados no utilizados.
Scott
fuente
4

Algunas personas tienen confusión acerca de por qué usamos un conjunto de validación, por lo que daré una explicación simple e intuitiva de lo que sucederá si no usa un conjunto de datos de validación.

Si no utiliza un conjunto de validación, tendrá que elegir hiperparámetros y decidir cuándo detener el entrenamiento en función del rendimiento del modelo en el conjunto de datos de prueba. Si decide cuándo detener el entrenamiento en función del rendimiento del modelo en el conjunto de datos de prueba, podría simplemente detener el entrenamiento cuando el modelo tenga un buen desempeño en el conjunto de datos de prueba. Luego, cuando informa sus resultados, informa la precisión en el conjunto de datos de prueba. El problema con esto es que se podría decir que su modelo funcionó realmente bien cuando, de hecho, fue solo una variación aleatoria que lo hizo mejorar solo en el conjunto de pruebas.

Si utiliza un conjunto de validación para decidir cuándo dejar de entrenar, la precisión del modelo en el conjunto de pruebas es más un reflejo imparcial de lo bien que se desempeña en la tarea en general, y muestra que no optimizó el modelo solo para un buen desempeño en el conjunto de pruebas.

dan dan
fuente
2

Me gustaría agregar a otras muy buenas respuestas aquí señalando un enfoque relativamente nuevo en el aprendizaje automático llamado "privacidad diferencial" (ver documentos de Dwork; el Win Vector Blog para más información). La idea permite reutilizar el conjunto de pruebas sin comprometer el rendimiento del modelo final. En un entorno típico, el conjunto de prueba solo se usa para estimar el rendimiento final; idealmente, ni siquiera se le permite mirarlo.

Como se describe bien en este blog de Win Vector (ver también otras entradas), es posible "usar" el conjunto de prueba sin sesgar el rendimiento del modelo. Esto se realiza mediante el procedimiento especial llamado "privacidad diferencial". El alumno no tendrá acceso directo al conjunto de prueba.

Vladislavs Dovgalecs
fuente
-1

Mi idea es que esa opción en la caja de herramientas de la red neuronal es evitar el sobreajuste. En esta situación, los pesos se especifican solo para los datos de entrenamiento y no muestran la tendencia global. Al tener un conjunto de validación, las iteraciones son adaptables a donde las disminuciones en el error de datos de entrenamiento causan disminuciones en los datos de validación y aumentos en el error de datos de validación; junto con la disminución del error en los datos de entrenamiento, esto demuestra el fenómeno de sobreajuste.

Azade
fuente
Me atrevo a decir que los conjuntos de prueba agregan un control de cordura a todo el proceso. Puede tener una curva de entrenamiento que reproduzca la curva de validación / pérdida en cada época. Pero si la precisión de su conjunto de prueba no mejora con épocas o tanques, no está haciendo nada bueno. Estás sobreajustando.
agcala