Cómo calcular la precisión y la recuperación en una matriz de confusión de 3 x 3
12
Predicted
class
Cat Dog Rabbit
Actual class
Cat 5 3 0
Dog 2 3 1
Rabbit 0 2 11
¿Cómo puedo calcular la precisión y la recuperación para que sea fácil calcular la puntuación F1? La matriz de confusión normal es una dimensión de 2 x 2. Sin embargo, cuando se convierte en 3 x 3, no sé cómo calcular la precisión y la recuperación.
Si detalla las definiciones de precisión (también conocido como valor predictivo positivo PPV) y recuperación (también conocido como sensibilidad), verá que se relacionan con una clase independiente de cualquier otra clase:
El recuerdo o la sensibilidad es la proporción de casos correctamente identificados como pertenecientes a la clase c entre todos los casos que realmente pertenecen a la clase c .
(Dado que tenemos un caso que realmente pertenece a " c ", ¿cuál es la probabilidad de predecir esto correctamente?)
La precisión o el valor predictivo positivo PPV es la proporción de casos identificados correctamente como pertenecientes a la clase c entre todos los casos de los cuales el clasificador afirma que pertenecen a la clase c .
En otras palabras, de aquellos casos que se predice que pertenecen a la clase c , ¿qué fracción pertenece realmente a la clase c ? (Dada la predicción " c ", ¿cuál es la probabilidad de ser correcta?)
valor predictivo negativo VPN de aquellos casos que se predice que no pertenecen a la clase c , ¿qué fracción realmente no pertenece a la clase c ? (Dada la predicción "no c ", ¿cuál es la probabilidad de ser correcta?)
Para que pueda calcular la precisión y la recuperación de cada una de sus clases. Para las tablas de confusión de clases múltiples, esos son los elementos diagonales divididos por sumas de filas y columnas, respectivamente:
Muchas gracias. Ya entiendo la analogía descrita en su solución. Leeré el periódico. Aceptaré esto como respuesta. No entiendo PPV y NPV. Explique estos conceptos tan gráficos como se explicaron los Sens y Spec y aceptaré su respuesta.
user22149
3
Al reducir los datos a opciones forzadas (clasificación) y no registrar si alguna de ellas fueron "llamadas cerradas", obtiene estimaciones estadísticas de precisión mínima con información mínima, además de asumir secretamente una función extraña de utilidad / pérdida / costo y usar umbrales arbitrarios . Sería mucho mejor utilizar la información máxima, que incluiría las probabilidades de pertenencia a la clase y no elecciones forzadas.
Si simplemente desea el resultado, mi consejo sería no pensar demasiado y utilizar las herramientas a su disposición. Así es como puedes hacerlo en Python;
El siguiente es un ejemplo de una matriz de confusión de múltiples clases asumiendo que nuestras etiquetas de clase son A, B y C
A / P A B C Suma
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18
Suma 18 18 19 55
Ahora calculamos tres valores para Precisión y Recuperación de cada uno y los llamamos Pa, Pb y Pc; y de manera similar Ra, Rb, Rc.
Sabemos que Precisión = TP / (TP + FP), por lo que para Pa, el verdadero positivo será A real predicho como A, es decir, 10, el resto de las dos celdas en esa columna, ya sea B o C, hacen Falso positivo. Entonces
Pa = 10/18 = 0.55 Ra = 10/17 = 0.59
Ahora la precisión y la recuperación para la clase B son Pb y Rb. Para la clase B, verdadero positivo es el B real predicho como B, es decir, la celda que contiene el valor 12 y el resto de las dos celdas en esa columna hacen Falso positivo, entonces
Pb = 12/18 = 0.67 Rb = 12/20 = 0.6
Del mismo modo Pc = 9/19 = 0.47 Rc = 9/18 = 0.5
El rendimiento general del clasificador estará determinado por la precisión promedio y la recuperación promedio. Para esto, multiplicamos el valor de precisión para cada clase con el número real de instancias para esa clase, luego los sumamos y dividimos con el número total de instancias. Me gusta ,
Al reducir los datos a opciones forzadas (clasificación) y no registrar si alguna de ellas fueron "llamadas cerradas", obtiene estimaciones estadísticas de precisión mínima con información mínima, además de asumir secretamente una función extraña de utilidad / pérdida / costo y usar umbrales arbitrarios . Sería mucho mejor utilizar la información máxima, que incluiría las probabilidades de pertenencia a la clase y no elecciones forzadas.
fuente
La forma más fácil es no usar la confusión_matriz en absoluto, Usar la clasificación_informe (), le dará todo lo que siempre necesitó, saludos ...
Editar:
este es el formato para confusion_matrix ():
[[TP, FN]
[FP, TN]]
Y el informe de clasificación da todo esto
fuente
Si simplemente desea el resultado, mi consejo sería no pensar demasiado y utilizar las herramientas a su disposición. Así es como puedes hacerlo en Python;
Para obtener el siguiente resultado
fuente
El siguiente es un ejemplo de una matriz de confusión de múltiples clases asumiendo que nuestras etiquetas de clase son A, B y C
A / P A B C Suma
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18
Suma 18 18 19 55
Ahora calculamos tres valores para Precisión y Recuperación de cada uno y los llamamos Pa, Pb y Pc; y de manera similar Ra, Rb, Rc.
Sabemos que Precisión = TP / (TP + FP), por lo que para Pa, el verdadero positivo será A real predicho como A, es decir, 10, el resto de las dos celdas en esa columna, ya sea B o C, hacen Falso positivo. Entonces
Pa = 10/18 = 0.55 Ra = 10/17 = 0.59
Ahora la precisión y la recuperación para la clase B son Pb y Rb. Para la clase B, verdadero positivo es el B real predicho como B, es decir, la celda que contiene el valor 12 y el resto de las dos celdas en esa columna hacen Falso positivo, entonces
Pb = 12/18 = 0.67 Rb = 12/20 = 0.6
Del mismo modo Pc = 9/19 = 0.47 Rc = 9/18 = 0.5
El rendimiento general del clasificador estará determinado por la precisión promedio y la recuperación promedio. Para esto, multiplicamos el valor de precisión para cada clase con el número real de instancias para esa clase, luego los sumamos y dividimos con el número total de instancias. Me gusta ,
Precisión promedio = (0.55 * 17 + 0.67 * 20 + 0.47 * 18) / 55 = 31.21 / 55 = 0.57 Recuperación promedio = (0.59 * 17 + 0.6 * 20 + 0.5 * 18) / 55 = 31.03 / 55 = 0.56
Espero que ayude
fuente