Encontré esto confuso cuando uso la caja de herramientas de red neuronal en Matlab.
Dividió el conjunto de datos sin procesar en tres partes:
- conjunto de entrenamiento
- conjunto de validación
- 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:
- ¿Cuál es la diferencia entre el conjunto de validación y el conjunto de prueba?
- ¿El conjunto de validación es realmente específico para la red neuronal? O es opcional.
- Para ir más allá, ¿hay alguna diferencia entre la validación y las pruebas en el contexto del aprendizaje automático?
machine-learning
validation
xiaohan2012
fuente
fuente
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.
Respuestas:
Normalmente para realizar un aprendizaje supervisado, necesita dos tipos de conjuntos de datos:
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.
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:
La fase de validación a menudo se divide en dos partes :
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 .
fuente
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
fuente
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.
fuente
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.
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
fuente
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.
fuente
Una tarea típica de aprendizaje automático se puede visualizar como el siguiente ciclo anidado:
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.
fuente
Una forma de pensar en estos tres conjuntos es que dos de ellos (
training
yvalidation
) provienen del pasado, mientras que eltest
conjunto proviene del "futuro". El modelo debe construirse y ajustarse utilizando datos del "pasado" (training
/validation
datos), pero nuncatest
datos 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
test
yvalidation
establecer. 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
test
conjunto podría ser simplemente datos del mismo período de tiempo que lostraining
/validation
sets, que "espera". De esta manera, no tuvo influencia en el ajuste del modelo, pero esos datos no provienen del futuro.fuente
test
datos 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.La mayoría de los algoritmos de minería de datos supervisados siguen estos tres pasos:
fuente
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.
fuente
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.
fuente
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.
fuente