← Volver a Aprende con CDIA

Clasificación: de los modelos a su evaluaciónMatriz de confusión

IntermedioEvaluación de modelos7 min de lectura

Matriz de confusión

La tabla que revela cómo se equivoca un clasificador, y de la que nacen precisión, recall y F1 cuando la exactitud engaña.

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 positivoPredicho negativo
Real positivoVerdadero Positivo (VP)Falso Negativo (FN)
Real negativoFalso 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.