8 Métricas y Evaluación de redes neuronales

Hasta ahora hemos visto como definir una red neuronal y como entrenarla. El último paso que nos queda es saber si la red ha funcionado correctamente. Pero ¿Eso no se hacía con la función de coste? Pues no exactamente. La función de coste se usa para ayudar a ajustar los parámetros durante el entrenamiento mediante los datos de entrada pero no para saber si el modelo es bueno. Para saber si el modelo es bueno , se usan las métricas.

Hay métricas que son las mismas que las funciones de coste pero hay otras métricas que no existen como función de coste.

Las métricas son un tema del que se habla mucho pero no se termina de explicar bien. Debido a que tienen una mínima parte de estadística se suelen contar de forma muy superficial y desde mi punto de vista hasta se explican de forma erronea.

Puesto que el tema de las métricas es muy extenso ya que hay muchísimas métricas, lo hemos dividido en:

Métricas en keras

Validacion

8.a Métricas regresión: Métricas que se usan en problemas de regresión

Problemas de clasificación:

8.b Métricas clasificación (Bayes): Métricas básicas que se usan en problemas de clasificación (Sensibilidad, Especificidad, Precisión (VPP), VPN, prevalencia y Teorema de Bayes

8.c Métricas rendimiento general de clasificación: Métricas derivadas que se usan en problemas de clasificación.

8.d Selección de métricas de clasificación: Elegir que métrica usar en cada caso.

8.e Intervalos de confianza: Crear intervalos de confianza (o Intervalo de credibilidad) para comparar métricas.

Métricas en keras

En el método fit de Keras tenemos un nuevo parámetro para indicar la métrica llamado metrics que contiene un array con todas las métricas que queremos tener en nuestra red mientras se va entrenando

Para obtener un array con los valores de la métrica en cada época (en entrenamiento) se usa la siguiente línea

Para obtener un array con los valores de la métrica en cada época (en validación) se usa la siguiente línea (nótese como se pone el prefijo val_)

Validación

Acabamos de ver que entrenando la red neuronal , el error se consigue bajar a prácticamente cero. Es decir que los valores de los parámetros , pesos (weight) y sesgos bias, debe ser muy buenos. No exactamente. Resulta que los parámetros se han ajustado a los datos que le hemos pasado, pero ¿Como es de bueno el modelo para nuevos datos que no ha visto? Realmente ver como se comporta con datos nuevos y con los datos que ha ya visto es lo que nos va a decir como es de bueno nuestro modelo. Así que pasemos a ver como sacar las métricas también con datos nuevos.

Lo primero es averiguar de donde obtenemos nuevos datos. Normalmente no tenemos nuevos datos así que lo que hacemos es que solo vamos a entrenar nuestra red neuronal con el 80% de los datos y el 20% restante los guardaremos para validar la red neuronal. Eso lo vamos a hacer con la función train_test_split de scikit-learn

La función train_test_split tiene los siguientes argumentos:

Los primeros arrays son los datos a dividir entre los datos de entrenamiento o de validación (test en inglés).

test_size: La fracción de datos que se va a usar para la validación.Es un valor de 0.0 a 1.0. Siendo 0.0 que no hay datos para validación y 1.0 que todos sería para validación.Un valor aceptable de test_size es entre 0.2 a 0.3.

random_state: Es para que sea reproducible el generador de los números aleatorios.

retorna los 4 array:

x_train: Array con la x de los datos de entrenamiento

x_test: Array con la x de los datos de validación

y_train: Array con la y de los datos de entrenamiento

y_test: Array con la y de los datos de validación

Y ahora a Keras se los tenemos que pasar así:

Lo datos de entrenamiento se pasan igual que antes pero los de validación se pasan en en un tupla en un parámetro llamado validation_data.

Por último tenemos que obtener la métrica para los datos de validación. Se obtiene igual que antes pero el nombre de la métrica empieza por val_

Veamos un ejemplo completo:

Podemos ver en el gráfico que la métrica es muy similar con los datos de validación que con los de entrenamiento. otro detalle importante es que las métricas suelen ser buenas si su valor es 1 (al contrario de las funciones de pérdida en la que lo bueno era un 0)

Ahora pasemos a ver las distintas métricas que hay:

8.a Métricas regresión

Problemas de clasificación:

8.b Métricas clasificación (Bayes)

8.c Métricas rendimiento general de clasificación

8.d Selección de métricas de clasificación

8.e Intervalos de confianza

Ejercicios

Ejercicio 1

Dado el problema de las flores, vuelve a entrenar una red neuronal pero ahora indicando los datos de validación.

Para ello deberás separar los datos en un 80% de datos para entrenamiento y un 20% de datos para validación

Muestra la gráfica en la que se vea el loss en cada época tanto en entrenamiento como en validación.

Ejercicio 2

Dado el problema de las imágenes de los números, vuelve a entrenar una red neuronal pero ahora indicando los datos de validación.

Para ello deberás separar los datos en un 80% de datos para entrenamiento y un 20% de datos para validación

Muestra la gráfica en la que se vea el loss en cada época tanto en entrenamiento como en validación.