¿Cómo se calcula la precisión y la recuperación para la clasificación multiclase utilizando la matriz de confusión?

92

Me pregunto cómo calcular la precisión y la recuperación utilizando una matriz de confusión para un problema de clasificación de varias clases. Específicamente, una observación solo se puede asignar a su clase / etiqueta más probable. Me gustaría calcular:

  • Precisión = TP / (TP + FP)
  • Recuperación = TP / (TP + FN)

para cada clase, y luego calcule la medida F micro-promedio.

daiyue
fuente
Este DOCX , Evaluación de un modelo de clasificación - ¿Qué precisión y la recuperación dime? , de Compumine proporciona una introducción simple a la matriz de confusión y las medidas derivadas de ella. Ayuda a crear la matriz de confusión, precisión, recuperación, especificidad y precisión.
Jayran Choopan
44
Encuentra la respuesta aquí. Muy buena explicación youtube.com/watch?v=FAr2GmWNbT0
El enlace Compumine está muerto.
Trenton
Para el caso multiclase, lo que entiendo que a lo largo de las filas (eje = 0) es la recuperación y a lo largo de las columnas (eje = 1) es la precisión. rxnlp.com/…
MD ZIA ULLAH

Respuestas:

69

En un caso de 2 hipótesis, la matriz de confusión suele ser:

       | Declare H1  |  Declare H0 |
|Is H1 |    TP       |   FN        |
|Is H0 |    FP       |   TN        |

donde he usado algo similar a tu notación:

  • TP = verdadero positivo (declarar H1 cuando, en verdad, H1),
  • FN = falso negativo (declarar H0 cuando, en verdad, H1),
  • FP = falso positivo
  • TN = verdadero negativo

A partir de los datos sin procesar, los valores de la tabla normalmente serían los recuentos de cada aparición sobre los datos de prueba. A partir de esto, debería poder calcular las cantidades que necesita.

Editar

La generalización de los problemas de varias clases es sumar sobre filas / columnas de la matriz de confusión. Dado que la matriz está orientada como anteriormente, es decir, que una fila dada de la matriz corresponde a un valor específico para la "verdad", tenemos:

Precision i=MiijMji

Recall i=MiijMij

Es decir, la precisión es la fracción de eventos en los que correctamente declaramos de todos los casos en los que el algoritmo declarada . Por el contrario, recordar es la fracción de eventos en los que declaramos correctamente de todos los casos en los que el verdadero estado del mundo es .iiii

Dave
fuente
1
En mi caso, hay más de 10 clases, así que supongo que FN significará el recuento total de declarar la clase H (i), i! = 1; y lo mismo es FP?
Daiyue
Hola, me pregunto cuáles serán los valores para Precision and Recall, si TP + FP = 0, y TP + FN = 0 para alguna clase real en la matriz de confusión.
Daiyue
La precisión para la clase ino está definida si no hay instancias donde el algoritmo declare i. La recuperación de la clase ino está definida si el conjunto de prueba no incluye la clase i.
Dave
Mi objetivo final es calcular la Medida Macro F, por lo que necesito valores de precisión y recuperación para cada clase i; Entonces, ¿cómo puedo calcular la medida Macro-F si los dos casos anteriores aparecen en alguna clase i? En particular, ¿cuál es el valor para Fi, y si la clase i cuenta como una de las clases M, el número de elementos en M se contará como el denominador de la fórmula para calcular la medida de Macro F.
Daiyue
1
Sry, ¿podrías explicar tu idea más claramente?
Daiyue
31

Buen documento de resumen, mirando estas métricas para problemas de varias clases:

  • Sokolova, M. y Lapalme, G. (2009). Un análisis sistemático de las medidas de desempeño para las tareas de clasificación. Procesamiento y gestión de la información, 45 , p. 427-437. ( pdf )

El resumen lee:

Este documento presenta un análisis sistemático de veinticuatro medidas de rendimiento utilizadas en el espectro completo de las tareas de clasificación de Machine Learning, es decir, binario, multiclase, multi-etiquetado y jerárquico. Para cada tarea de clasificación, el estudio relaciona un conjunto de cambios en una matriz de confusión con características específicas de los datos. Luego, el análisis se concentra en el tipo de cambios en una matriz de confusión que no cambia una medida, por lo tanto, preserva la evaluación de un clasificador (invariancia de medida). El resultado es la taxonomía de invariancia de medida con respecto a todos los cambios relevantes de distribución de etiquetas en un problema de clasificación. Este análisis formal está respaldado por ejemplos de aplicaciones en las que las propiedades de invariancia de las medidas conducen a una evaluación más confiable de los clasificadores.

James Taylor
fuente
2
Bienvenido al sitio, @JamesTaylor. ¿Le importaría dar un resumen de la información en el documento vinculado para ayudar a los lectores a decidir si es lo que necesitan y en caso de que el enlace se cierre?
gung - Restablece a Monica
8

Usando sklearn y numpy:

from sklearn.metrics import confusion_matrix
import numpy as np

labels = ...
predictions = ...

cm = confusion_matrix(labels, predictions)
recall = np.diag(cm) / np.sum(cm, axis = 1)
precision = np.diag(cm) / np.sum(cm, axis = 0)

Para obtener medidas generales de precisión y recuperación, use

np.mean(recall)
np.mean(precision)
Cristian Garcia
fuente