Matriz de confusión multiclase: cómo interpretarla

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
- Documentación oficial o primaria de scikit-learn.org
- Documentación oficial o primaria de scikit-learn.org
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