Matriz de confusión multiclase: cómo interpretarla

Matriz de confusión multiclase con diagonal y errores destacados

Una matriz de confusión multiclase cruza la clase real con la predicha para mostrar dónde acierta y qué categorías confunde un modelo. Con K clases produce una tabla K×K. La diagonal contiene aciertos; las celdas fuera de ella revelan errores específicos que un promedio global puede ocultar.

Confirmar la orientación

Muchas bibliotecas colocan las clases reales en filas y las predicciones en columnas, pero algunas visualizaciones usan la convención contraria. Lee los ejes antes de interpretar. En scikit-learn, confusion_matrix utiliza filas reales y columnas predichas.

Una celda de la fila Gato y columna Perro cuenta gatos clasificados como perros. La celda simétrica representa el error opuesto y puede tener una frecuencia muy distinta.

Ejemplo con tres clases

Supón un clasificador de incidencias: Baja, Media y Alta. La matriz es:

Real \ Predicha Baja Media Alta
Baja 80 12 3
Media 9 61 10
Alta 2 14 39

Los aciertos son 80 + 61 + 39. La pareja Media–Alta concentra errores en ambas direcciones y merece revisar etiquetas, variables y consecuencias operativas.

Accuracy global

La exactitud se calcula dividiendo la suma de la diagonal entre todos los casos. Es un resumen útil si las clases tienen importancia y frecuencia similares. Con una clase dominante puede parecer alta aunque el modelo ignore categorías pequeñas.

Publica también el soporte de cada clase y métricas por clase. Una sola cifra no explica a quién perjudica el error.

Precision y recall por clase

Para evaluar una clase, trátala como positiva y agrupa todas las demás como negativas. El recall de Alta responde qué proporción de las incidencias altas fue detectada. La precision de Alta responde qué proporción de las predicciones Alta era realmente alta.

En la orientación fila real/columna predicha:

  • recall de una clase = diagonal / suma de su fila;
  • precision de una clase = diagonal / suma de su columna.

Esta regla ayuda a leer, pero calcula con una biblioteca para evitar errores y documenta la convención.

Promedios macro, weighted y micro

Macro calcula la métrica por clase y les da igual peso. Visibiliza fallos en clases minoritarias. Weighted pondera por el número de casos reales y puede quedar dominado por clases frecuentes. Micro agrega decisiones antes de calcular la métrica.

No elijas el promedio que produzca el número mayor. Selecciónalo según el impacto: si cada clase importa por igual, macro suele ser informativo; si buscas rendimiento promedio por caso, weighted o micro pueden complementar.

Crear la matriz en Python

Con scikit-learn:

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

etiquetas = ["Baja", "Media", "Alta"]
cm = confusion_matrix(y_real, y_pred, labels=etiquetas)
ConfusionMatrixDisplay(cm, display_labels=etiquetas).plot()

Fijar labels conserva el orden y muestra clases ausentes en una partición. Usa el mismo orden en comparaciones entre modelos.

Matriz normalizada

Una matriz de recuentos muestra carga real. Una normalizada por fila muestra proporciones dentro de cada clase real y facilita comparar recalls cuando los soportes difieren:

cm_norm = confusion_matrix(
    y_real, y_pred, labels=etiquetas, normalize="true"
)

No sustituyas recuentos por porcentajes: presenta ambos. Un 50 % puede representar uno de dos casos y tener mucha incertidumbre.

Multiclase no es multietiqueta

En multiclase, cada observación pertenece a una sola clase. En multietiqueta, una observación puede tener varias etiquetas simultáneas. Para el segundo caso, se suelen calcular matrices binarias por etiqueta con multilabel_confusion_matrix.

Confundir ambos problemas lleva a métricas incorrectas. Documenta cómo se construyó y codificó el objetivo.

Clases desbalanceadas y coste

Si Alta es rara pero crítica, optimizar accuracy puede favorecer siempre Baja. Ajusta ponderaciones, muestreo o umbrales y mide recall de Alta junto con falsas alarmas. Traduce errores a coste operativo: una confusión Alta→Media puede ser más grave que Baja→Media.

Una matriz de costes puede asignar penalizaciones diferentes a cada celda. La decisión del modelo debe alinearse con esas consecuencias, no solo con el total de aciertos.

Comparar modelos correctamente

Usa el mismo conjunto de prueba, orden de etiquetas y preprocesamiento. No elijas el modelo observando repetidamente el test final. Compara matrices, métricas por clase e intervalos o variación entre particiones.

Analiza ejemplos de las celdas con más errores. Puede haber etiquetas ambiguas, datos insuficientes, cambio temporal o clases difíciles de separar por definición.

Visualización legible

Muestra una escala de color secuencial, valores dentro de las celdas y una leyenda. Para muchas clases, ordena por jerarquía o similitud y ofrece una tabla de errores principales. Una matriz de 100×100 necesita filtros o vistas complementarias.

Informe profesional

Incluye fecha, población, tamaño del test, soporte por clase, orientación de ejes, normalización y versión del modelo. Añade accuracy, macro F1 y las métricas que correspondan al riesgo.

La matriz no es solo una imagen: es un mapa de fallos. Su valor aparece al pasar de una celda fuera de la diagonal a una hipótesis, una revisión de casos y una decisión de mejora.

Continúa aprendiendo

Amplía este tema con precision, recall y F1, curva ROC y AUC, validación cruzada.

Fuentes oficiales y primarias

Preguntas frecuentes

¿Qué muestra la diagonal de una matriz de confusión?
Los casos en los que la clase predicha coincide con la clase real.

¿Las filas son reales o predichas?
Depende de la herramienta; en scikit-learn las filas son reales y las columnas predichas.

¿Cómo calculo recall por clase?
Con filas reales, divide la celda diagonal de la clase entre la suma de su fila.

¿Qué promedio conviene en clases desbalanceadas?
Macro visibiliza cada clase por igual; weighted refleja la frecuencia. Conviene publicar ambos y métricas por clase.

¿Debo normalizar la matriz?
Puedes normalizar para comparar proporciones, pero conserva también recuentos y soporte.

¿Multiclase y multietiqueta son lo mismo?
No. Multiclase asigna una clase por caso; multietiqueta permite varias etiquetas simultáneas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir