98 votos

¿Cómo calcular la precisión/recuperación de la clasificación multiclase-multilabel?

Me pregunto cómo calcular las medidas de precisión y recuperación para la clasificación multiclase y multietiqueta, es decir, la clasificación en la que hay más de dos etiquetas y en la que cada instancia puede tener varias etiquetas.

1 votos

la parte de la multietiqueta lo hace mucho más difícil y yo también estoy interesado en esto. Creo que no es aplicable a los problemas de multietiqueta, pero no te fíes de mí en absoluto.

1 votos

De hecho, todos los problemas multietiqueta son multiclase, por lo que se puede utilizar el paquete utiml en R, por ejemplo, o Mulan en Java.

23voto

Yuval Filmus Puntos 123

Otra herramienta popular para medir el rendimiento de los clasificadores es ROC/AUC También éste tiene una extensión multiclase / multietiqueta: véase [Hand 2001]

[Hand 2001]: Una simple generalización del área bajo la curva ROC a los problemas de clasificación de clases múltiples

0 votos

Es popular, pero puede tener fallos. No me fío del todo. stats.stackexchange.com/questions/93901/

6 votos

¡Nunca cambies el desbordamiento de pila! El tipo plantea un problema, la respuesta más votada no responde realmente a su pregunta, sino que señala alguna otra herramienta/biblioteca que sería mejor

0 votos

Sí, ¿cómo puede esta respuesta tener +20? Ni siquiera contiene las palabras precisión y recall.

18voto

Paul Puntos 88

Aquí es una discusión de un hilo del foro de coursera sobre la matriz de confusión y la medición de precisión/recuperación multiclase.

La idea básica es calcular la precisión y el recuerdo de todas las clases y, a continuación, promediarlas para obtener una única medida numérica real.

La matriz de confusión facilita el cálculo de la precisión y el recuerdo de una clase.

A continuación se explica algo básico sobre la matriz de confusión, copiado de ese hilo:

Una matriz de confusión es una forma de clasificar los verdaderos positivos, los verdaderos negativos, los falsos positivos y los falsos negativos, cuando hay más de 2 clases. Se utiliza para calcular la precisión y la recuperación y, por lo tanto, la puntuación f1 para los problemas de varias clases.

Los valores reales están representados por columnas. Los valores predichos están representados por filas.

Ejemplos:

10 ejemplos de entrenamiento que en realidad son 8, se clasifican (predicen) incorrectamente como 5
13 ejemplos de entrenamiento que en realidad son 4, se clasifican incorrectamente como 9

Matriz de confusión

cm =
     0     1     2       3     4       5       6     7      8       9      10
     1   298     2       1     0       1       1     3      1       1       0
     2     0     293     7     4       1       0     5      2       0       0
     3     1     3      263    0       8       0     0      3       0       2
     4     1     5       0     261     4       0     3      2       0       1
     5     0     0       10    0     254       3     0     10       2       1
     6     0     4       1     1       4       300   0      1       0       0
     7     1     3       2     0       0       0     264    0       7       1
     8     3     5       3     1       7       1     0      289     1       0
     9     0     1       3     13      1       0     11     1       289     0
    10     0     6       0     1       6       1     2      1       4       304

Para la clase x:

  • Verdadero positivo: posición de la diagonal, cm(x, x).

  • Falso positivo: suma de la columna x (sin diagonal principal), suma(cm(:, x))-cm(x, x).

  • Falso negativo: suma de la fila x (sin diagonal principal), suma(cm(x, :), 2)-cm(x, x).

Puede calcular la precisión, la recuperación y la puntuación F1 siguiendo la fórmula del curso.

El promedio de todas las clases (con o sin ponderación) da valores para todo el modelo.

4 votos

Tienes los ejes invertidos. Según lo que has escrito, tu CM debería estar transpuesto.

0 votos

@Tarantula ¿Por qué lo crees? Creo que tiene razón.

0 votos

@shahensha Pruébalo para una columna, está mal.

8voto

Russell Puntos 6

No sé sobre la parte de la multi-etiqueta pero para la clasificación mutli-clase estos enlaces te ayudarán

Este enlace explica cómo construir la matriz de confusión que puede utilizar para calcular la precisión y la recuperación de cada categoría

Y esto enlace explica cómo calcular las medidas micro-f1 y macro-f1 para evaluar el clasificador en su conjunto.

Espero que le haya resultado útil.

5 votos

El punto clave es: hay múltiples formas válidas de calcular estas métricas (por ejemplo, micro-F1 frente a macro-F1) porque hay múltiples formas de definir lo que es correcto. Esto depende de su aplicación y de sus criterios de validez.

0 votos

Ahmed: ¡Gracias por los enlaces! @JackTanner ¿Tendrías quizás una referencia para esto (para el caso de la clasificación multiclase multietiqueta)?

1 votos

@MaVe, lo siento, no hay enlaces. Esto es sólo por experiencia personal. Lo conseguirás simplemente pensando en lo que constituye, por ejemplo, un verdadero positivo y un falso positivo para tus fines.

0voto

terryk2 Puntos 81

Comprueba estas diapositivas de cs205.org en Harvard . Una vez que se llega a la sección sobre medidas de error, se habla de la precisión y la recuperación en entornos multiclase (por ejemplo, uno contra todos o uno contra uno) y de las matrices de confusión. Las matrices de confusión es lo que realmente quieres aquí.

Para su información, en el paquete de software de Python scikits.learn En el caso de los clasificadores, existen métodos incorporados para calcular automáticamente cosas como la matriz de confusión de los clasificadores entrenados en datos multiclase. Probablemente también pueda calcular directamente los gráficos de precisión-recuerdo. Merece la pena verlo.

4 votos

Lamentablemente, el enlace a las diapositivas está muerto y he podido encontrar las diapositivas en otra parte.

0 votos

Se repondrá cuando lleguen a esa conferencia en el curso de este año. Si pudiera copiar el PDF a una ubicación de enlace permanente, lo haría, pero no puedo, así que es inevitable que se rompa periódicamente y no habrá otro lugar donde encontrar los apuntes, son específicos de ese curso.

0 votos

sklearn no admite la multietiqueta para la matriz de confusión github.com/scikit-learn/scikit-learn/issues/3452

0voto

MachLearn Puntos 1

De Ozgur et al (2005) se desprende que debe calcular la Precisión y la Recuperación siguiendo las expresiones normales, pero en lugar de promediar sobre el total de N instancias de su conjunto de datos, debe utilizar N=[instancias con al menos una etiqueta con la clase en cuestión asignada].

aquí está la referencia mencionada: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.104.8244&rep=rep1&type=pdf

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X