¿Cómo puedo hacer que las matrices de gran confusión sean más fáciles de leer?

9

Recientemente publiqué un conjunto de datos ( enlace ) con 369 clases. Realicé un par de experimentos con ellos para tener una idea de lo difícil que es la tarea de clasificación. Por lo general, me gusta si hay matrices de confusión para ver el tipo de error que se está cometiendo. Sin embargo, una matriz no es práctica.369×369

¿Hay alguna manera de dar la información importante de las matrices de gran confusión? Por ejemplo, generalmente hay muchos ceros que no son tan interesantes. ¿Es posible ordenar las clases de manera que la mayoría de las entradas distintas de cero estén alrededor de la diagonal para permitir mostrar múltiples matrices que forman parte de la matriz de confusión completa?

Aquí hay un ejemplo para una gran matriz de confusión .

Ejemplos en la naturaleza

La figura 6 de EMNIST se ve bien:

ingrese la descripción de la imagen aquí

Es fácil ver dónde están muchos casos. Sin embargo, esas son solo clases. Si se usara toda la página en lugar de solo una columna, esto probablemente podría ser 3 veces más, pero todavía sería solo clases. Ni siquiera cerca de 369 clases de HASY o 1000 de ImageNet.26326=78

Ver también

Mi pregunta similar sobre CS.stackexchange

Martin Thoma
fuente
Te compadezco ;-) Puedes probar las matrices de confusión de uno contra todos para cada una de las clases. Dados, mire o clases en las que el comportamiento no sea típico y use una matriz de confusión completa solo en ellos.
DaL
1
¿Por qué no solo informar la precisión del modelo para cada categoría? ¿Quién realmente necesita ver toda la matriz?
Darrin Thomas
1
@DarrinThomas No se trata solo de informarlo en un documento. También se trata de analizar los errores yo mismo.
Martin Thoma
1
En primer lugar, podría normalizar los valores en filas y luego trazarlo como un mapa de calor. Además, puede ordenar la clase por la precisión de clase (valor normalizado en la diagonal). Supongo que esto aumentaría enormemente la legibilidad.
Nikolas Rieble
1
Probablemente debería preguntar esto en matemáticas. SE / stackoverflow nuevamente. Estoy bastante seguro de que hay algoritmos que reordenan las filas / columnas de tal manera que la mayor parte del valor esté cerca de la diagonal.
Martin Thoma

Respuestas:

4

Puede aplicar una técnica que describí en mi tesis de maestría (página 48ff) y llamada Confusion Matrix Ordering (CMO):

  1. Ordene las columnas / filas de tal manera que la mayoría de los errores estén en diagonal.
  2. Divida la matriz de confusión en múltiples bloques para que los bloques individuales puedan imprimirse / verse fácilmente, y para que pueda eliminar algunos de los bloques porque hay pocos puntos de datos.

Buen efecto secundario: este método también agrupa automáticamente clases similares. La figura 5.12 de mi tesis de maestría muestra que:

ingrese la descripción de la imagen aquí

Puede aplicar la matriz de confusión ordenando con clana

Martin Thoma
fuente
Ver github.com/MartinThoma/clana para una implementación
Martin Thoma el
1

En lugar de tratar de reordenar las columnas y las filas, sugeriría intentar encontrar alguna otra forma de visualizar los datos.

Aquí hay una posible sugerencia alternativa. Podría agrupar las clases, por ejemplo, en ~ 20 grupos, donde cada grupo tiene ~ 20 clases, utilizando algún tipo de algoritmo de agrupación que reúne clases similares en el mismo grupo (por ejemplo, si dos clases se confunden con frecuencia entre sí, deberían ser más propensos a estar en el mismo grupo). Luego puede mostrar una matriz de confusión de grano grueso, con una fila / columna por grupo; la celda en (yo,j)yoj. Además, puede tener ~ 20 matrices de confusión de grano fino: para cada grupo, puede mostrar la matriz de confusión de clases, para las ~ 20 clases en cada grupo. Por supuesto, también podría ampliar esto mediante el uso de agrupamiento jerárquico y tener matrices de confusión en granularidades múltiples.

Puede haber otras posibles estrategias de visualización también.

Como un punto filosófico general: también podría ayudar a aclarar sus objetivos (lo que desea obtener de la visualización). Puede distinguir dos tipos de usos de visualización:

  • Análisis exploratorio: no estás seguro de lo que estás buscando; solo desea una visualización que pueda ayudarlo a buscar patrones o artefactos interesantes en los datos.

  • Figuras con un mensaje: tiene un mensaje en particular que desea que le quite el lector y desea diseñar una visualización que ayude a respaldar ese mensaje o proporcionar evidencia del mensaje.

Podría ayudarlo a saber a qué está tratando de apuntar y luego diseñar una visualización dirigida a eso:

  • Si está haciendo un análisis exploratorio, en lugar de tratar de elegir una visualización perfecta, a menudo es útil intentar crear tantas visualizaciones como pueda imaginar. No te preocupes si alguno de ellos es perfecto; está bien si cada uno es defectuoso, ya que cada uno puede darle una perspectiva potencialmente diferente de los datos (probablemente será bueno en algunos aspectos y malo en otros).

  • Si tiene un mensaje en particular que está tratando de transmitir o un tema que está tratando de desarrollar, busque una visualización que admita ese tema. Es difícil hacer una sugerencia específica sin saber cuál podría ser ese tema / mensaje.

DW
fuente
0

Es importante saber por qué la matriz de confusión EMNIST se ve bien.

Pero me parece extraño que no hayan mantenido el color con los números más altos siendo los más oscuros, por ejemplo, la mayoría de las clasificaciones de errores vacías que contienen ceros son de un gris más oscuro que las que contienen un número entero. No parece consistente.

Intentaría usar el estilo EMINST, excepto mantenerlo consistente donde el color indica el número de entradas en una celda. Blanco para cero entradas y negro para la mayoría de las entradas.

Una clasificación perfecta sería una diagonal negra con triángulos superiores e inferiores completamente blancos. Donde hubiera parches grises en los triángulos indicaría problemas. Incluso en un conjunto de 1000 clases esto sería útil. Para ImageNet, donde las clases son jerárquicas, quizás ordenar las columnas de modo que las subclases se agrupen a la derecha de la clase principal conduciría a parches oscuros al cuadrado.

Además, si obtiene las 5 respuestas principales para una imagen, las clases pueden no ser mutuamente excluyentes, de modo que la clasificación del perro para una imagen de un lap_dog debería ser verdadera, por lo tanto, en una matriz de confusión, las clases más generales deberían ser mucho más oscuras que las clasificaciones precisas (si los colores están normalizados). Por lo tanto, el cuadrado superior izquierdo sería el más oscuro.

leyenda del rock
fuente