validacion machine learning geoestadistica example cruzada cross anidada validation machine-learning neural-network backpropagation

validation - machine - Cómo utilizar la validación cruzada de k-fold en una red neuronal



validacion cruzada pdf (2)

  1. Divide tus datos en K pliegues no superpuestos. Haga que cada pliegue K contenga un número igual de ítems de cada una de las m clases (validación cruzada estratificada; si tiene 100 ítems de la clase A y 50 de la clase B y hace una validación de 2 pliegues, cada pliegue debe contener 50 artículos al azar de A y 25 de B).

    1. Para i en 1..k:

      • Designar pliegue i el pliegue de prueba
      • Designe uno de los pliegues k-1 restantes del pliegue de validación (esto puede ser aleatorio o una función de i, en realidad no importa)
      • Designar todos los pliegues restantes el pliegue de entrenamiento.
      • Realice una búsqueda en la cuadrícula de todos los parámetros gratuitos (p. Ej., La tasa de aprendizaje, el número de neuronas en la capa oculta) que entrena en sus datos de entrenamiento y la pérdida de cómputo en sus datos de validación. Elegir parámetros minimizando la pérdida.
      • Utilice el clasificador con los parámetros ganadores para evaluar la pérdida de la prueba. Acumular resultados

Ahora ha recopilado resultados agregados en todos los pliegues. Esta es tu actuación final. Si va a aplicar esto de manera real, en la naturaleza, use los mejores parámetros de la búsqueda de cuadrícula para capacitar en todos los datos.

Estamos escribiendo una pequeña ANN que se supone que categoriza 7000 productos en 7 clases basadas en 10 variables de entrada.

Para hacer esto, tenemos que usar la validación cruzada de k-fold pero estamos confundidos.

Tenemos este extracto de la diapositiva de presentación:

¿Cuáles son exactamente los conjuntos de validación y prueba?

De lo que entendemos es que corremos a través de los 3 conjuntos de entrenamiento y ajustamos los pesos (época única). Entonces, ¿qué hacemos con la validación? Porque por lo que entiendo es que el conjunto de prueba se usa para obtener el error de la red.

Lo que sucede a continuación también me confunde. ¿Cuándo tiene lugar el cruce?

Si no es mucho pedir, se agradecería una lista de pasos.


Pareces estar un poco confundido (recuerdo que yo también lo estaba) así que voy a simplificar las cosas para ti. ;)

Escenario de red neuronal de muestra

Cada vez que se le asigna una tarea como diseñar una red neuronal, a menudo también se le proporciona un conjunto de datos de muestra para usar con fines de capacitación. Supongamos que está entrenando un sistema de red neuronal simple Y = W · X donde Y es la salida calculada a partir del cálculo del producto escalar (·) del vector de peso W con un vector de muestra dado X Ahora, la forma ingenua de hacerlo sería utilizar todo el conjunto de datos de, por ejemplo, 1000 muestras para entrenar la red neuronal. Suponiendo que la capacitación converja y sus pesos se estabilicen, entonces puede decir con seguridad que su red clasificará correctamente los datos de la capacitación. Pero, ¿qué sucede con la red si se presenta con datos que no se han visto anteriormente? Claramente, el propósito de tales sistemas es poder generalizar y clasificar correctamente los datos que no sean los utilizados para la capacitación.

Explicación de sobrealimentación

Sin embargo, en cualquier situación del mundo real, los datos nuevos / no vistos anteriormente solo están disponibles una vez que su red neuronal se despliega en un entorno de producción, llamémoslo así. Pero como no lo has probado adecuadamente, probablemente pasarás un mal momento. :) El fenómeno por el cual cualquier sistema de aprendizaje coincide casi perfectamente con su conjunto de entrenamiento, pero falla constantemente con datos invisibles, se denomina overfitting .

Los tres conjuntos

Aquí vienen las partes de validación y prueba del algoritmo. Volvamos al conjunto de datos original de 1000 muestras. Lo que hace es dividirlo en tres conjuntos: entrenamiento , validación y pruebas ( Tr , Va y Te ), utilizando proporciones cuidadosamente seleccionadas. (80-10-10)% suele ser una buena proporción, donde:

  • Tr = 80%
  • Va = 10%
  • Te = 10%

Formación y validación.

Ahora, lo que sucede es que la red neuronal está entrenada en el conjunto Tr y sus pesos se actualizan correctamente. El conjunto de validación Va se usa luego para calcular el error de clasificación E = M - Y utilizando los pesos resultantes del entrenamiento, donde M es el vector de salida esperado tomado del conjunto de validación e Y es la salida calculada resultante de la clasificación ( Y = W * X ). Si el error es más alto que un umbral definido por el usuario , se repite toda la época de validación del entrenamiento . Esta fase de entrenamiento finaliza cuando el error calculado utilizando el conjunto de validación se considera lo suficientemente bajo.

Entrenamiento inteligente

Ahora, un truco inteligente aquí es seleccionar aleatoriamente qué muestras usar para el entrenamiento y la validación del conjunto total de Tr + Va en cada iteración de época. Esto asegura que la red no se adapte en exceso al conjunto de entrenamiento.

Pruebas

El conjunto de pruebas Te se utiliza para medir el rendimiento de la red. Esta información es perfecta para este propósito, ya que nunca se usó durante la fase de capacitación y validación. De hecho, se trata de un pequeño conjunto de datos que no se han visto anteriormente, que se supone que imitan lo que sucedería una vez que la red se implementa en el entorno de producción.

El rendimiento se mide nuevamente en términos de error de clasificación como se explicó anteriormente. El rendimiento también puede (o tal vez debería) medirse en términos de precisión y recuperación para saber dónde y cómo se produce el error, pero ese es el tema para otras preguntas y respuestas.

Validación cruzada

Una vez entendido este mecanismo de prueba-validación-prueba, se puede fortalecer aún más la red contra el exceso de ajuste mediante la validación cruzada K-fold . Esto es, en cierto modo, una evolución de la función inteligente que expliqué anteriormente. Esta técnica consiste en realizar rondas K de pruebas de validación de entrenamiento en conjuntos de Tr , Va y Te diferentes, no superpuestos, de proporciones iguales .

Dado k = 10 , para cada valor de K, dividirá su conjunto de datos en Tr+Va = 90% y Te = 10% y ejecutará el algoritmo, registrando el rendimiento de la prueba.

k = 10 for i in 1:k # Select unique training and testing datasets KFoldTraining <-- subset(Data) KFoldTesting <-- subset(Data) # Train and record performance KFoldPerformance[i] <-- SmartTrain(KFoldTraining, KFoldTesting) # Compute overall performance TotalPerformance <-- ComputePerformance(KFoldPerformance)

Overfitting Mostrado

Estoy tomando la famosa trama de abajo de overfitting para mostrar cómo el conjunto de validación ayuda a evitar el sobreajuste. El error de entrenamiento, en azul, tiende a disminuir a medida que aumenta el número de épocas: por lo tanto, la red está intentando coincidir exactamente con el conjunto de entrenamiento. El error de validación, en rojo, por otro lado sigue un perfil diferente en forma de u. El mínimo de la curva es cuando lo ideal es que el entrenamiento se detenga, ya que este es el punto en el que el error de entrenamiento y validación es más bajo.

Referencias

Para más referencias, este excelente libro le brindará un sólido conocimiento del aprendizaje automático, así como varias migrañas. Depende de usted decidir si vale la pena. :)