Haciendo la matriz de confusión un poco menos confusa

Buenas! como andan? Acá estamos una vez más, semana número 49 de este año 2019, llegó Diciembre y nos vamos acercando lentamente a fin de año. Linda época, linda época.

Hoy quería volver a traer un tema de teoría de aprendizaje automático, bien básico, pero super interesante…

El tema que quiero tratar es la matriz de confusión. Que es una tabla que se usa mucho para analizar modelos de clasificación en aprendizaje supervisado y nos permite ver fácilmente qué tipos de aciertos y errores está teniendo el modelo que estamos entrenando.

Pero antes, quiero aprovechar para saludar a todos los que escuchan este podcast por primera vez. Les cuento que se pueden suscribir para no perderse ninguno de los próximos episodios en la aplicación de podcast que más les guste, Apple Podcast, Ivoox, Spotify, Overcast, Pocket cast, la que sea, y si no lo encuentran me avisan así veo de agregarlo.

Me pueden escribir en el formulario de contacto de pochocosta.com y ahí nos ponemos en contacto. Como por ejemplo hizo Nicolás que me escribió y estuvimos intercambiando varios correos. 

Nicolás me comentó que el usa PowerBI y que en las últimas versiones incorporan aprendizaje automático. Así que si ya PowerBI era una herramienta bastante poderosa ahora con aprendizaje automático ya debe tener super poderes. 

Así que bueno, ya saben, los que quieren comentarme algo me escriben y listo. Yo respondo siempre. Generalmente respondo rápido, aunque a veces puedo demorar un poquito más, pero responder respondo siempre.

Matriz de confusión para Machine Learning

Y bueno ahora sí, volvamos al tema de la matriz de confusión. 

Ya como lo dice su nombre esta matriz suele ser un poco confusa la primera vez, así que vamos a tratar de explicarla de una manera fácil así no quedan dudas.

Primero empecemos distinguiendo los dos problemas en los que se suele usar. Por un lado tenemos el problema de la clasificación binaria, o sea queremos clasificar dos alternativas. Si y No. 

Por ejemplo el típico caso de saber si una persona está enferma o no.

El otro tipo de problema sería donde tenemos más de dos clases que queremos clasificar.

Y como dijimos antes, estamos hablando de aprendizaje supervisado, por lo que tenemos un conjunto de datos de entrenamiento que está etiquetado.

Así que empecemos con la matriz de confusión binaria que al tener dos posibles valores que clasificar va a ser un poco más fácil de explicar.

Matriz de confusión binaria

Pensemos por ejemplo que tenemos un grupo de 200 personas que sabemos de antemano si tienen gripe o no. De hecho, hay 90 que tienen gripe y 110 que no.

Y lo que queremos hacer es evaluar a un modelo de clasificación para ver cuánto acierto tiene en su diagnóstico.

Entonces una vez que hayamos hecho pasar los 200 casos por el modelo vamos a poder comparar cada predicción del modelo con el resultado real.

Y acá se abren cuatro variantes entre lo real y lo que prediga el modelo y eso es lo que tenemos que contabilizar para armar la matriz.

De ahí que la matriz de clasificación binaria tenga cuatro cuadrantes. Dos arriba y dos abajo. Así que ya se lo pueden ir imaginando. Un cuadrado con cuatro casilleros.

Estas cuatro variantes son:

  1. Persona que tiene gripe y el modelo predijo que tiene gripe. Esto sería un acierto.
  2. Persona que no tiene gripe y el modelo predijo que no tiene gripe. Este es otro acierto.
  3. Persona que tiene gripe y el modelo predijo que no tiene gripe. Error.
  4. Persona que no tiene gripe y el modelo predijo que si tiene gripe. Otro error.

Ahora bien, generalmente cuando leemos libros o artículos a estas cuatro variantes las encontramos mencionadas pero a cada una por un nombre. Y estos nombres son los que las hacen confusas porque son como un juego de palabras que es fácil de que se mezclen.

Veamos cuales son.

Cuando el valor real es sí y el modelo predice sí, se lo conoce como verdadero positivo. Acá un truquito, los que empiezan con verdadero son aciertos y los que empiezan con falso son errores 😀

Ahora cuando el modelo predice no y en realidad era un no, eso es un verdadero negativo. Empieza con verdadero así que es otro acierto.

Ahora nos quedan los errores.

Si en realidad es un no pero el modelo predice que si, es un falso positivo. También conocido como error tipo I.

Y si el modelo predice un no pero en realidad era un sí, es un falso negativo. También llamado error tipo II.

Matriz de confusión

Ahora volvamos al ejemplo.

Tenemos 200 pacientes. De esos 200, 90 están enfermos y 110 no lo están.

Supongamos que de los 90 enfermos el modelo acertó 80 y en 10 se equivocó.

En nuestra matriz de confusión tenemos que anotar, 80 verdaderos positivos y 10 falsos positivos.

Y de los 110 que no estaban enfermos el modelo acertó en 100 casos y en 10 se equivocó.

Entonces agregamos a la matriz, 100 verdaderos negativos y 10 falsos negativos.

Matriz de confusión del ejemplo de la gripe

Ahora con estos datos podemos calcular varios factores que nos van a ayudar a saber que tan bien está funcionando el modelo y en caso de que no esté funcionando muy bien nos va a ayudar a darnos cuenta el porqué.

Por ejemplo usando estos datos podemos calcular la exactitud del modelo en inglés Accuracy. Eso lo hacemos dividiendo el total de aciertos sobre el total de ejemplos. En nuestro caso sería 180 sobre 200. Eso nos dá 0,9.

Podemos calcular también la precisión que se hace dividiendo la cantidad de verdaderos positivos sobre la suma de verdaderos positivos y falsos positivos. Esto en nuestro caso sería 80 sobre 80 mas 10. Y nos dá 0,88.

Así que bueno, esta sería la matriz de confusión para cuando tenemos dos posibles valores.

Matriz de confusión no binaria

Después tenemos la matriz de confusión no binaria que sería cuando tenemos mas de dos valores, y esta matriz se arma poniendo tantas filas y columnas como posibles valores tenga nuestra clasificación.

Entonces por ejemplo supongamos que vamos a hacer una clasificación de tres posibles valores: Soleado, nublado o lluvioso.

Entonces tenemos que poner una fila para soleado, otra fila para nublado y otra para lluvioso. Después lo mismo con las columnas, ponemos una columna para soleado, otra para nublado y otra para lluvioso.

Las filas estarán relacionadas con los valores reales y las columnas con los valores que predijo el modelo.

Cuando terminemos de completarla deberíamos ver claramente que se forme una diagonal desde la parte superior izquierda hacia la parte inferior derecha con los valores más grandes.

Si no se forma esa diagonal a simple vista entonces querrá decir que tenemos un problema con el modelo o con los datos.

Veamoslo con un ejemplo.

Supongamos que tenemos un conjunto de datos 1000 datos donde 990 muestras son de la clase 1 y 10 son de la clase 2. Y cuando los pasamos por el modelo de clasificación las predicciones dan que 1000 son de la clase 1.

El modelo tuvo 990 aciertos sobre 1000 casos. Si te te basas en la tasa de precisión o de exactitud va a dar la sensación de que está todo bien.

Ahora cuando miramos la matriz de confusión y vemos que no se formó la diagonal ya notamos algo raro y si lo revisamos bien nos damos cuenta de que en realidad el modelo confundió a los de clase 2 y no pudo clasificarlos bien.

Obviamente este es un caso exagerado y totalmente desbalanceado para que el ejemplo sea fácil de digerir. Y me estoy dando cuenta que da pie para hablar de balance de datos en algún próximo episodio. Así que me lo voy a anotar. De todas formas diganme si les parece un tema interesante o no!

Pero bueno, este era el tema para hablar hoy. Espero que les haya gustado.

Dejar recomendación en iTunes

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *