Está en la página 1de 5

Tópicos Avanzados en Ingeniería de Software

Sesión 04: Evaluación y Mejora de ANN

I. OBJETIVOS

- Evaluar el funcionamiento de una Artificial Neural Networking


- Aplicar k-fold Cross Validation para la mejora de rendimiento de la ANN.

II. TEMAS A TRATAR

• Bias-Variance
• K-fold Cross Validation
• Overfitting
• Tuning

III. MARCO TEORICO

Bias-Variance

Cuando entrenamos nuestra red neuronal artificial dos veces se nota que la segunda vez, se obtiene una menor
precisión, tanto en el conjunto de entrenamiento como en el conjunto de prueba comparado con la primera
vez. Eso nos introduce a la compensación Sesgo-Varianza (Bias-Variance). La Compensación entre Bias-
Variance es el hecho de que estamos tratando de entrenar un modelo que no solo será preciso, sino que no
debería tener demasiada variación de precisión, cuando lo entrenamos varias veces.

El problema de la variación se puede explicar por el hecho de que cuando obtenemos la precisión en el
conjunto de pruebas, si ejecutamos el modelo nuevamente y probamos nuevamente su rendimiento en otro
conjunto de pruebas, podemos obtener una precisión muy diferente. Por lo tanto, juzgar el rendimiento de
nuestro modelo solo con una precisión en un conjunto de prueba, en realidad no es súper relevante.
Esa no es la forma más relevante, para evaluar el rendimiento del modelo.

K-Fold Cross Validation

La técnica K-Fold Cross Validation mejora mucho esta situación. Porque eso solucionará este problema de
varianza. Lo arreglará dividiendo el conjunto de entrenamiento en 10 pliegues (folds) cuando K es igual a 10,
y la mayoría de las veces, K es igual a 10.
Tópicos Avanzados en Ingeniería de Software

Y entrenamos nuestro modelo en 9 pliegues y lo probamos en el último pliegue restante.


Y ya que con 10 pliegues podemos hacer diez combinaciones diferentes de 9 pliegues para entrenar un
modelo y 1 pliegue para probarlo.
Eso significa que podemos entrenar el modelo y probar el modelo en diez combinaciones de conjuntos de
entrenamiento y prueba.

Overfitting

El sobreajuste (overfitting) es el efecto de sobreentrenar un algoritmo de aprendizaje con unos ciertos datos
para los que se conoce el resultado deseado. Cuando un sistema se entrena demasiado (se sobreentrena) o se
entrena con datos extraños, el algoritmo de aprendizaje puede quedar ajustado a unas características muy
específicas de los datos de entrenamiento que no tienen relación causal con la función objetivo.
La validación cruzada es una técnica con la que se puede identificar la existencia de diferentes problemas
durante el entrenamiento de los modelos, como la aparición de sobreajuste. Permitiendo así obtener modelos
más estables.

Tuning

La afinación o ajuste (tuning) de parámetros permite elegir los mejores parámetros para nuestra red neuronal
Tópicos Avanzados en Ingeniería de Software

En la ANN, tenemos dos tipos de parámetros: parámetros que se aprenden del modelo durante el
entrenamiento y estos son los pesos y tenemos algunos otros parámetros que se mantienen fijos y estos
parámetros se denominan hiper parámetros.
Así, por ejemplo, estos hiper parámetros son el número de una época, el tamaño del lote, el optimizador o el
número de neuronas en las capas. Y cuando entrenamos bien nuestra red neuronal artificial, la entrenamos con
algunos valores fijos de estos hiper parámetros. Pero tal vez al tomar algunos otros valores, obtendríamos una
mayor precisión en general con una validación cruzada cuidadosa.
Y de eso se trata el ajuste de parámetros.

GridSearchCV

GridSearchCV es una clase disponible en scikit-learn que permite evaluar y seleccionar de forma sistemática
los parámetros de un modelo. Indicándole un modelo y los parámetros a probar, puede evaluar el rendimiento
del primero en función de los segundos mediante validación cruzada.

IV. ACTIVIDADES (La práctica tiene una duración de 2 horas)

1. En el funcionamiento de la sesión anterior se observó que se obtuvo en una primera


ejecución un 86% de precisión, luego en una segunda un 83% de precisión. Esto es un
problema de Sesgo-Varianza que no refleja exactamente un resultado claro.
2. Para ello se va a evaluar y mejorar la ANN. En el archivo de la sesión anterior agregue el
siguiente código para la evaluación mediante cross_val_score, de la ANN.

3. Ejecute el bloque de código. Tomará algo más del tiempo esperado para ver los resultados.
Tópicos Avanzados en Ingeniería de Software

4. Al verificar la ventana de explorador de variables se observa que en promedio la precisión


está cerca del 84%.

5. Así que el 86% de precisión que obtuvimos la primera vez no fue relevante. Por eso la
importancia de usar la validación cruzada de K-fold para evitar ese tipo de trampas.

6. A continuación, vamos a mejorar y afinar la ANN para superar el Overfitting por medio de
Dropout Regularization.
7. Importe la librería Dropout

8. Luego agregue el siguiente código que importe la librería GridSearchCV para la selección
sistemática de parámetros:
Tópicos Avanzados en Ingeniería de Software

9. Ejecute el bloque de código.


10. ¿Cuál es la mejor precisión obtenida?

V. Ejercicios

1. Solución de la práctica anterior

¿deberíamos decir adiós a ese cliente?

2. Obtenga un 86% de precisión con la validación cruzada k-Fold.


a. Medalla de bronce: Precisión entre 84% y 85%.
b. Medalla de plata: Precisión entre 85% y 86%.
c. Medalla de oro: Precisión superior al 86%.

3. ¿Qué librerías nos permite mejorar la precisión y de qué manera?

VII. Bibliografía y referencias

1. Ketkar, N. (2017). Deep Learning with Python. Apress.


2. https://www.datacamp.com/community/tutorials/deep-learning-python

También podría gustarte