La matriz de confusión es una tabla que desglosa los aciertos y errores de un clasificador por tipo. Responde no solo cuánto acierta, sino en qué se equivoca, algo que un simple porcentaje de exactitud esconde.
Los cuatro cuadrantes
Para un problema binario (positivo / negativo), toda predicción cae en una de cuatro casillas:
| Predicho positivo | Predicho negativo | |
|---|---|---|
| Real positivo | Verdadero Positivo (VP) | Falso Negativo (FN) |
| Real negativo | Falso Positivo (FP) | Verdadero Negativo (VN) |
- VP / VN: el modelo acertó.
- FP (falsa alarma): dijo positivo cuando era negativo.
- FN (omisión): dijo negativo cuando era positivo.
La distinción entre FP y FN es crucial: en un diagnóstico médico, un FN (no detectar una enfermedad real) suele ser mucho más grave que un FP.
Por qué la exactitud engaña
La exactitud (accuracy) es la fracción de aciertos:
Pero con clases desbalanceadas es traicionera. Si el 99 % de los correos no son spam, un modelo que diga "nunca es spam" acierta el 99 %... y es inútil. Por eso necesitamos métricas que miren cada clase.
Precisión y recall
La precisión (precision) responde: de lo que predije como positivo, ¿cuánto lo era de verdad?
El recall (sensibilidad) responde: de todos los positivos reales, ¿cuántos detecté?
Hay tensión entre ambos: exigir más precisión suele bajar el recall y viceversa. El F1-score los combina en un solo número (su media armónica):
Elegir la métrica según el problema
No existe "la" métrica correcta: depende del costo de cada error.
- Detección de fraude o enfermedades: prioriza el recall (no dejar pasar positivos).
- Filtros que molestan al usuario (spam agresivo): prioriza la precisión (evitar falsas alarmas).
En código
scikit-learn calcula la matriz y todas las métricas de una vez:
from sklearn.metrics import confusion_matrix, classification_report
y_pred = modelo.predict(X_test)
print(confusion_matrix(y_test, y_pred))
# [[VN FP]
# [FN VP]]
print(classification_report(y_test, y_pred))
# precisión, recall y F1 para cada clase, de un vistazo
Las filas son la clase real y las columnas la predicha, así que la diagonal son los aciertos (VN y VP).
Para llevar
La matriz de confusión revela cómo se equivoca un modelo, no solo cuánto. De ella nacen precisión, recall y F1, que reemplazan a la engañosa exactitud cuando las clases están desbalanceadas. Y justamente ese desbalance merece lección propia: cómo enfrentarlo es el tema del balance de clases, la próxima parada.
