Machine Learning a tu alcance: La matriz de confusión

Tuesday, January 23, 2018

Machine Learning a tu alcance: La matriz de confusión

La matriz de confusión y sus métricas asociadas son parte fundamental de la "Caja de herramientas" del científico de datos, ya que, para saber qué modelo funciona mejor para un determinado problema, necesitamos métricas o herramientas que nos ayuden a evaluarlo. Sin embargo, a pesar de su gran utilidad, es un concepto que de primeras resulta algo complejo. En este post lo explicaremos de forma clara y sencilla, con ejemplos, y en concreto, intentaremos que no haya margen de confusión con la terminología en inglés o español.

¿Qué es la matriz de confusión y para qué se utiliza?


Recordemos que un modelo de clasificación es aquel capaz de predecir a qué clase va a pertenecer una nueva instancia, basándose en lo aprendido en instancias anteriores. Así, en un modelo binario, podemos considerar dos clases: “Positiva” y “Negativa”. Basándonos en datos históricos de nuestra base de clientes, por ejemplo, podremos construir un modelo que prediga si un cliente va a darse de baja (caso tipo de predicción de “churning”), o no. Para evaluar este modelo que hemos creado, podríamos simplemente calcular su precisión (“accuracy”), como la proporción entre las predicciones correctas que ha hecho el modelo y el total de predicciones.

Precisión= (Predicciones correctas)/(Número total de Predicciones)

Esta precisión sería equivalente a restar el ratio de error de la unidad: 1- ratio de error.

Sin embargo, aunque en ocasiones resulta práctico por su facilidad de cálculo, otras veces es necesario profundizar un poco más y tener en cuenta los tipos de predicciones correctas e incorrectas que realiza el clasificador. Es aquí donde entra en juego la Matriz de Confusion (“Confusion Matrix”)

Definición de matriz de confusión.


Como ya hemos indicado en la introducción, la matriz de confusión es un concepto muy útil, pero resulta algo complejo de entender (¡y de explicar!). Así que, si al principio no entiendes bien las definiciones que vamos dando, no te desanimes y sigue leyendo porque pondremos ejemplos que te ayudarán a comprenderlo mejor.

La matriz de confusión de un problema de clase n es una matríz nxn en la que las filas se nombran según las clases reales y las columnas, según las clases previstas por el modelo. Sirve para mostrar de forma explícita cuándo una clase es confundida con otra. Por eso, permite trabajar de forma separada con distintos tipos de error.

Por ejemplo, en un modelo binario que busque predecir si una seta es venenosa o no, basándose en determinadas características físicas de éstas consideraremos las clases reales p(ositivo= la seta es venenosa) y n(egativo=la seta es comestible), y las clases pronosticadas por el modelo, S(í, es venenosa), o N(o, es comestible). De esta forma, la matriz de confusión para este modelo tiene etiquetadas sus filas con las clases reales, y sus columnas, con las predichas por el modelo. Quedaría así:

 Matriz de confusión para clasificador binario.
Figura 1: Matriz de confusión para clasificador binario.
De esta forma, la diagonal principal contiene la suma de todas las predicciones correctas (el modelo dice “S” y acierta, es venenosa, o dice “N” y acierta también, es comestible). La otra diagonal refleja los errores del clasificador: los falsos positivos o “true positives” (dice que es venenosa “S”, pero en realidad no lo es “n”), o los falsos negativos o “false negatives” (dice que es comestible “N”, pero en realidad es venenosa “p”).

Sin embargo, cuando las distintas “clases” están muy desequilibradas, esta forma de clasificar la “bondad” del funcionamiento de un clasificador resulta poco útil. Por ejemplo, si la tasa de abandono de clientes (“churn”) es de un 10% al mes (es decir, 10 personas de cada 100 se dan de baja al mes), y consideramos al cliente que se da de baja como clase “positiva”, la relación entre clases positivas: negativas esperada sería de 1:9. Así que si directamente asignamos todos los clientes la clase negativa (=no churn), estaríamos consiguiendo una precisión base del 90%, pero… no nos serviría para nada.

El problema radica en que al medir la precisión del algoritmo de esa forma no distinguimos entre los errores de tipo falso positivo y falso negativo, como si ambos tuvieran la misma importancia. Y esto no es así. Lo vamos a ver más claro con un ejemplo.

Algoritmo de diagnóstico de cáncer:

  • Falso positivo o “Error tipo I” El paciente no tiene cáncer, pero el algoritmo ha diagnosticado que sí lo padece. Se realizarán pruebas diagnósticas adicionales que acabarán descartando el diagnóstico. Tendrá un coste económico y un impacto emocional sobre el paciente, pero no se traducirá en riesgo vital.
  • Falso negativo o “Error tipo II”: El paciente sí tiene cáncer, pero el algoritmo predice que no. Este error del algoritmo se traduce en una falta de detección temprana de la enfermedad. El paciente no recibirá tratamiento a tiempo y esto, indudablemente reduce sus posibilidades de superar la enfermedad.

(Si quieres saber más sobre estos tipos de error puedes leer este otro post de nuestro blog: Tipos de error en Machine Learning: ¿los conoces?.)

Tipos de error en Machine Learning.
Figura 2: Tipos de error en Machine Learning.


Viendo la importancia que tiene discriminar en cada caso concreto los distintos tipos de error que pueden resultar de la aplicación de algoritmo, entendemos mejor la necesidad de trabajar con diferentes métricas. Así, vamos a expresar la matriz de confusión de esta otra forma:


Matriz de confusión con otras métricas de evaluación.
Figura 3: Matriz de confusión con otras métricas de evaluación.

El significado de cada uno de los términos es el siguiente:

a es el número de predicciones correctas de clase negativa (negativos reales)
b es el número de predicciones incorrectas de clase positiva (falsos positivos)
c es el número de predicciones incorrectas de clase negativa (falsos negativos)  
d es el número de predicciones correctas de clase positiva (positivos reales)

Para entender este “trabalenguas” volvemos al ejemplo del clasificador de setas venenosas. Así, “a” sería el número de veces que el algoritmo ha acertado al decir que una seta no es venenosa. Por otro lado, “b” sería el número de veces que el algoritmo se confunde y dice que es venenosa una seta comestible. “c” serían los casos en que el algoritmo predice que la seta no es venenosa, y resulta que sí que lo es (mal asunto…,) y, por último, “d” serían los aciertos del algoritmo al predecir que es mejor no comerse esa seta. 

Basándonos en los valores de ésta nueva matriz de confusión, más completa, vamos a definir una serie de métricas que nos serán muy útiles.

1. Precisión y exactitud


La Precisión o “Accuracy” (AC) se refiere a la dispersión del conjunto de valores obtenidos a partir de mediciones repetidas de una magnitud. Cuanto menor es la dispersión mayor la precisión. Se representa por la proporción entre el número de predicciones correctas (tanto positivas como negativas) y el total de predicciones, y se calcula mediante la ecuación:

 Fórmula cálculo Precisión.

Figura 4: Precisión.

Por otro lado, la Exactitud o, en inglés, “Precision” se refiere a lo cerca que está el resultado de una medición del valor verdadero. En términos estadísticos, la exactitud está relacionada con el sesgo de una estimación. También se conoce como Verdadero Positivo (o “True positive rate”).  Se representa por la proporción entre los positivos reales predichos por el algoritmo y todos los casos positivos. Es decir, de todas las setas venenosas, cuántas ha predicho correctamente el algoritmo que lo son. Ojo que en inglés se usa el término “precision” para la exactitud y el término español precisión ser refiere a “accuracy”. Puede llevar a confusión. Se calcula según la ecuación:

Fórmula cálculo de la Exactitud.

Figura 5: Exactitud.

La siguiente ilustración ayuda a ver de forma práctica la diferencia entre precisión y exactitud. Así, por ejemplo, la figura (b) representa un resultado exacto y preciso, mientras que la (C) es preciso, pero no exacto y la (a) no es ni una cosa ni la otra.


By CK-12 Foundation (raster); [Public domain], via Wikimedia Commons
Figura 6: Precisión vs Exactitud.(Public Domain)

2. Sensibilidad y Especificidad


La sensibilidad y la especificidad son dos valores que nos indican la capacidad de nuestro estimador para discriminar los casos positivos, de los negativos. La sensibilidad es la fracción de verdaderos positivos, mientras que la especifidad, es la fracción de verdaderos negativos.

La Sensibilidad (“Recall”), también se conoce como Tasa de Verdaderos Positivos (True Positive Rate) (TP). Es la proporción de casos positivos (en nuestro ejemplo, setas venenosas) que fueron correctamente identificadas por el algoritmo. Se calcula según la ecuación: 

Fórmula Sensibilidad.

Figura 7: Sensibilidad.


La Especificidad, por otra parte, es la Tasa de Verdaderos Negativos, (“true negative rate” o TN). Se trata de los casos negativos que el algoritmo ha clasificado correctamente.  Su ecuación es:

Fórmula Especifidad.

Figura 8: Especificidad. 

La exactitud y la sensibilidad nos están indicando la relevancia de los resultados. Por ejemplo, un algoritmo muy exacto, (P alto) nos dará muchos más resultados relevantes que irrelevantes, mientras que un algoritmo muy específico, (TP alto)será el que detecte la mayoría de resultados de interés (los primeros).

La conveniencia de usar una métrica otra como medida del estimador dependerá de cada caso en particular y, en concreto, del “coste” asociado a cada error de clasificación del algoritmo. Por ejemplo, en ejemplo de las setas, es más importante que la fracción de verdaderos positivos sea alta, es decir que el algoritmo sea muy sensible y haya un mayor número de setas venenosas detectadas correctamente. El coste de un falso negativo, es decir, una seta venenosa dada por comestible, podría ser dramático. En otros casos, es más interesante priorizar la especificidad sobre la sensibilidad. Por ejemplo, las pruebas que buscan detectar individuos sanos


3. Otros términos derivados de la matriz de confusión.


Dejamos para el final otro par de métricas que también se usan habitualmente para la evaluación de algoritmos: la tasa de falsos positivos y la de falsos negativos.

La tasa de Falsos Positivos, (False Positive rate, FP) es la proporción de casos negativos que fueron erróneamente clasificados  como positivos por el algoritmo. Es decir, de las setas comestibles, cuántas clasificó el algoritmo erróneamente como venenosas.Se calcula según la siguiente ecuación:

Fórmula Tasa Falsos Positivos

Figura 9:  Tasa Falsos Positivos

La tasa de Falsos Negativos (False Negative rate, FN) es la proporción de casos positivos incorrectamente clasificados (setas venenosa no detectadas). Su ecuación es:

Tasa de Falsos Negativos.

Figura 10: Tasa de Falsos Negativos.

Una vez definidas estas métricas, sólo  nos resta ponerlas en práctica. En el post "Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo" puedes encontrar un ejemplo práctico de su uso para evaluar un modelo creado en Azure ML Studio, pero en futuros experimentos tendremos ocasión de ver muchos más. ¡No te los pierdas!.


No te pierdas ninguno de nuestros post. Suscríbete a LUCA Data Speaks.

No comments:

Post a Comment