Matriz de confusión en aprendizaje automático con EJEMPLO

⚡ Resumen inteligente

La matriz de confusión es una tabla de medición del rendimiento para modelos de clasificación que compara las etiquetas predichas con las etiquetas reales conocidas, revelando exactamente qué clases clasifica correctamente un clasificador y cuáles clasifica erróneamente.

  • 🔘 Cuatro resultados: Los verdaderos positivos, los verdaderos negativos, los falsos positivos y los falsos negativos llenan cada celda de una matriz binaria.
  • ☑️ Tipos de error: Un falso positivo es un error de tipo I, mientras que un falso negativo es un error de tipo II.
  • ✅ Métricas derivadas: La exactitud, la precisión, la exhaustividad, la especificidad y la puntuación F1 provienen de los mismos cuatro parámetros.
  • 🧪 Más allá de la precisión: En datos desequilibrados, la precisión favorece a un modelo, mientras que la matriz revela en qué clase falla realmente.
  • 🛠️ Vista multiclase: Las N clases producen una cuadrícula de N×N donde la diagonal contiene todas las predicciones correctas.
  • ⚙️ Python ruta: scikit-learn construye la misma tabla en dos líneas con confusion_matrix() y classification_report().

Matriz de confusión en aprendizaje automático con ejemplo

¿Qué es la matriz de confusión?

A matriz de confusión es una técnica de medición del rendimiento para aprendizaje automático Clasificación. Se trata de una tabla que muestra el rendimiento de un modelo de clasificación en un conjunto de datos de prueba cuyos valores reales ya se conocen. El término matriz de confusión es bastante sencillo, pero la terminología que se deriva de él puede resultar confusa, por lo que cada parte se explica a continuación en lenguaje claro.

La matriz se aplica a cualquier clasificador supervisado — regresión logística, un árbol de decisión, un Modelo bayesiano ingenuo red neuronal profunda — porque solo compara dos columnas de etiquetas: lo que predijo el modelo y lo que realmente era cierto.

Cuatro resultados de la matriz de confusión

La matriz de confusión visualiza la precisión de un clasificador comparando las clases reales y las previstas. La matriz de confusión binaria está compuesta por cuadrados:

Tabla de confusión binaria que muestra los cuadrantes TP, FP, FN y TN.
Tabla de confusión

La tabla anterior muestra los cuatro cuadrados que contiene toda matriz de confusión binaria:

  • TP: Verdadero Positivo: Valores predichos correctamente predichos como positivos reales
  • FP: Falso positivo: Valores predichos incorrectamente predichos como positivos reales, es decir, valores negativos predichos como positivos.
  • FN: Falso negativo: Los valores positivos se predicen como negativos.
  • TN: Verdadero negativo: Valores predichos correctamente predichos como un valor negativo real

Las estadísticas dan a las dos celdas de error sus propios nombres. Un falso positivo es un Error tipo I — el modelo activó una alarma que nunca debería haberse activado. Un falso negativo es un Error tipo II — El modelo permaneció en silencio cuando debería haber dado la alarma. Saber cuál de las dos opciones es más costosa para tu problema determina qué métrica ajustar posteriormente.

Puedes calcular la prueba de precisión a partir de la matriz de confusión, como muestra la siguiente fórmula:

Fórmula de precisión derivada de los cuatro resultados de la matriz de confusión

Ejemplo de matriz de confusión

La matriz de confusión es un método útil de aprendizaje automático que permite medir la exhaustividad, la precisión, la exactitud y la curva AUC-ROC. El ejemplo de fútbol que se muestra a continuación ilustra el significado de los términos verdadero positivo, verdadero negativo, falso positivo y falso negativo en el lenguaje cotidiano.

Verdadero Positivo:

Hiciste una predicción positiva y resultó ser cierta. Por ejemplo, predijiste que Francia ganaría la Copa del Mundo, y ganó.

Verdadero negativo:

Predijiste que sería negativo, y eso también es cierto. Predijiste que Inglaterra no ganaría, y perdió.

Falso positivo:

Tu predicción es positiva y falsa.

Habías predicho que Inglaterra ganaría, pero perdió.

Falso negativo:

Tu predicción es negativa, y el resultado la hace falsa.

Se había predicho que Francia no ganaría, pero ganó.

Debes recordar que la primera palabra describe si la predicción fue correcta o incorrecta (Verdadero o Falso) y la segunda palabra describe lo que predijo el modelo (Positivo o Negativo).

Cómo calcular una matriz de confusión

Aquí está el proceso paso a paso para calcular una matriz de confusión en la minería de datos:

  • Paso 1) En primer lugar, necesitas un conjunto de datos de prueba junto con los valores de resultado esperados.
  • Paso 2) Predice todas las filas del conjunto de datos de prueba.
  • Paso 3) Compara los resultados esperados con las predicciones y cuenta:
    1. El total de predicciones correctas de cada clase.
    2. El total de predicciones incorrectas de cada clase.

Después de esto, estos números se organizan según los métodos que se indican a continuación:

  • Cada fila de la matriz corresponde a una clase real.
  • Cada columna de la matriz se relaciona con una clase predicha.
  • Los recuentos totales de clasificación correcta e incorrecta se ingresan en la tabla.
  • La suma de las predicciones correctas para una clase se coloca en la celda donde la fila real de esa clase se encuentra con su propia columna predicha: la diagonal.
  • La suma de las predicciones incorrectas para una clase se coloca en la fila correspondiente al valor de esa clase y en la columna de predicciones de la clase que el modelo haya elegido en su lugar.

La asignación de filas y columnas es una convención, no una regla, y algunas herramientas de gráficos invierten el orden, por lo que siempre conviene leer las etiquetas de los ejes antes de interpretar una matriz. La orientación utilizada aquí —valores reales en las filas y valores predichos en las columnas— es la que genera scikit-learn.

Otros términos importantes que utilizan una matriz de confusión

Una vez establecidos los cuatro recuentos, una familia de términos secundarios describe diferentes segmentos de la misma tabla:

  • Valor predictivo positivo (VPP): Esto se aproxima mucho a la precisión. Una diferencia significativa entre ambos términos es que el VPP tiene en cuenta la prevalencia. En una situación donde las clases están perfectamente equilibradas, el valor predictivo positivo es igual a la precisión.
  • Tasa de error nula: Este término define con qué frecuencia fallaría tu predicción si siempre predijeras la clase mayoritaria. Puedes usarlo como una métrica de referencia para comparar tu clasificador.
  • Puntuación F: La puntuación F1 es una puntuación promedio ponderada de la tasa de verdaderos positivos (exhaustividad) y la precisión.
  • Curva ROC: La curva ROC representa gráficamente la tasa de verdaderos positivos frente a la tasa de falsos positivos en diferentes puntos de corte. También muestra una relación de compromiso entre la sensibilidad (recuperación) y la especificidad, que es la tasa de verdaderos negativos.
  • Precisión: La métrica de precisión muestra la exactitud de la clase positiva. Mide la probabilidad de que la predicción de la clase positiva sea correcta.

Fórmula de precisión: verdaderos positivos divididos por verdaderos positivos más falsos positivos.

La puntuación máxima es 1 cuando el clasificador clasifica perfectamente todos los valores positivos. La precisión por sí sola no es muy útil, ya que ignora la clase negativa. Esta métrica suele ir acompañada de la exhaustividad. La exhaustividad también se denomina sensibilidad o tasa de verdaderos positivos, y se escribe como se muestra a continuación.

  • Sensibilidad: La sensibilidad calcula la proporción de clases positivas detectadas correctamente. Esta métrica muestra la eficacia del modelo para reconocer una clase positiva.

Fórmula de sensibilidad: verdaderos positivos divididos por verdaderos positivos más falsos negativos

Métricas y fórmulas de la matriz de confusión

Cada una de las métricas anteriores se basa en cálculos aritméticos sobre los mismos cuatro parámetros, por lo que resulta útil compararlas con la pregunta a la que responde cada una.

Métrico Fórmula Pregunta que responde Úselo cuando
Exactitud (TP + TN) / (TP + TN + FP + FN) ¿Cuántas predicciones fueron correctas en total? Las clases están más o menos equilibradas.
Precisión TP / (TP + FP) Cuando el modelo dice positivo, ¿con qué frecuencia acierta? Las falsas alarmas son caras.
Recuperación (Sensibilidad) TP / (TP + FN) De todos los aspectos positivos reales, ¿cuántos fueron detectados? Los resultados positivos que se pasan por alto son costosos.
Especificidad TN / (TN + FP) De todos los casos negativos reales, ¿cuántos fueron resueltos? La clase negativa también importa
Puntuación F1 2 × (Precisión × Recordatorio) / (Precisión + Recordatorio) ¿Cuál es el equilibrio entre ambos? Necesitas un número para ambos

Consideremos un filtro de spam probado en 100 correos electrónicos que produce TP = 45, FN = 5, FP = 10 y TN = 40. La precisión es (45 + 40) / 100 = 0.85. La exactitud es 45 / (45 + 10) = 0.82, la exhaustividad es 45 / (45 + 5) = 0.90 y la especificidad es 40 / (40 + 10) = 0.80. La puntuación F1 resulta ser 0.86.

Estas cifras revelan una realidad que un simple dato de precisión oculta: el filtro detecta el 90 % del spam real, pero pone en cuarentena erróneamente uno de cada cinco correos legítimos marcados. Que este equilibrio sea aceptable depende del coste de cada error, razón por la cual se presenta la matriz en lugar de solo el dato de precisión.

Matriz de confusión para clasificación de clases múltiples

Los problemas de clasificación rara vez se limitan a dos etiquetas, y la matriz se escala sin cambiar de forma. Para N clases, la tabla se convierte en una cuadrícula N×N: la diagonal contiene todas las predicciones correctas, y cada celda fuera de la diagonal registra exactamente qué clase se confundió con cuál otra.

Un modelo de tres clases que clasifica las imágenes en gato, perro y conejo genera una cuadrícula de 3×3. Si la celda en la fila "gato", columna "perro" contiene 12, entonces doce imágenes de gato fueron etiquetadas como perro. Este nivel de detalle es la razón por la que la matriz es más útil que una puntuación: identifica el par específico de clases que el modelo no puede diferenciar.

La precisión, la exhaustividad y la puntuación F1 se definen por clase utilizando una perspectiva de uno contra el resto, donde la clase en cuestión es la clase positiva y todo lo demás es negativo. Las cifras por clase se combinan luego de una de tres maneras:

  • Promedio macroeconómico: Calcula la métrica para cada clase de forma independiente y luego obtiene la media no ponderada. Todas las clases cuentan por igual, por lo que las clases poco frecuentes no se ven afectadas negativamente.
  • Promedio micro: Agrupa los recuentos de TP, FP y FN de todas las clases antes de calcular la métrica. Las clases grandes predominan, y para problemas de etiqueta única, la microprecisión, la microexhaustividad y la exactitud son idénticas.
  • Promedio ponderado: Calcula el promedio de las puntuaciones por clase utilizando como ponderación el número de instancias verdaderas de cada clase, lo que permite que el desequilibrio entre clases sea visible.

Elija la opción macro cuando todas las clases tengan la misma importancia, y la opción ponderada cuando la distribución de clases refleje el tráfico real.

Cómo crear una matriz de confusión en Python

La biblioteca scikit-learn construye la tabla completa a partir de dos matrices de etiquetas, por lo que no se requiere ningún conteo manual. El siguiente ejemplo compara diez etiquetas verdaderas con diez predicciones.

from sklearn.metrics import confusion_matrix

y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]

cm = confusion_matrix(y_true, y_pred)
print(cm)

La llamada devuelve una matriz NumPy de 2×2 en la que la fila 0 es la clase negativa real y la fila 1 es la clase positiva real:

[[4 1]
 [1 4]]

Al leer el array según la convención de scikit-learn, obtenemos TN = 4 (arriba a la izquierda), FP = 1 (arriba a la derecha), FN = 1 (abajo a la izquierda) y TP = 4 (abajo a la derecha). Al desempaquetar esos cuatro valores en una sola línea, se obtiene el mapa.ping explícito:

tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()

Para obtener precisión, exhaustividad y F1 para cada clase a la vez, incluyendo los promedios macro y ponderados descritos anteriormente, llame a classification_report() en lugar de calcular cada métrica manualmente:

from sklearn.metrics import classification_report

print(classification_report(y_true, y_pred))

Para una versión gráfica, ConfusionMatrixDisplay.from_predictions(y_true, y_pred) muestra la misma tabla como un mapa de calor etiquetado. La lista completa de argumentos, incluyendo el labels y normalize opciones, está documentado en el Referencia de la matriz de confusión de scikit-learn. El mismo paso de evaluación se aplica a los modelos construidos con TensorFlow, porque la métrica depende únicamente de las etiquetas predichas.

¿Por qué necesitas la matriz de confusión?

A continuación se presentan las ventajas y beneficios de utilizar una matriz de confusión.

  • Muestra cómo un modelo de clasificación se confunde al realizar predicciones.
  • La matriz de confusión te permite comprender no solo los errores que comete tu clasificador, sino también los tipos de errores que comete.
  • Este desglose te ayuda a superar la limitación de utilizar únicamente la precisión de la clasificación.
  • Cada columna de la matriz de confusión representa las instancias de esa clase predicha.
  • Cada fila de la matriz de confusión representa las instancias de la clase real.
  • Convierte la evaluación del modelo en un diagnóstico, señalando el par de clases específico que necesita más datos o una mejor característica.

Ese valor diagnóstico es la razón por la que la matriz de confusión se sitúa en el centro de la etapa de evaluación en cualquier Ciencia de los datos flujo de trabajo y por qué suele ser la primera tabla que se revisa antes de que un clasificador pase a producción.

Preguntas Frecuentes

Si tan solo el dos por ciento de los registros son fraudulentos, un modelo que predice "no fraude" en todos los casos alcanza una precisión del 98 por ciento sin detectar ningún error. La matriz expone inmediatamente la celda vacía de verdaderos positivos, razón por la cual la exhaustividad es más importante que la precisión en datos sesgados.

Una matriz normalizada muestra proporciones en lugar de recuentos brutos, generalmente dividiendo cada celda por el total de su fila. Permite comparar clases de tamaños muy diferentes de un vistazo, aunque oculta el tamaño de las muestras; por lo tanto, conviene informar ambas versiones cuando las clases estén desequilibradas.

Reconstruye la matriz con varios umbrales de probabilidad y observa el resultado. Al disminuir el umbral, los registros se mueven de la celda de falsos negativos a la de verdaderos positivos, lo que aumenta la exhaustividad, pero también los falsos positivos. Elige el umbral donde la combinación de errores restante resulte menos costosa.

No. La matriz contabiliza coincidencias de etiquetas discretas, por lo que necesita categorías. Los resultados de la regresión son continuos y se evalúan con medidas de error como el error absoluto medio o el coeficiente de determinación (R²). Dividir una variable objetivo continua en bandas es la única forma de que una matriz tenga sentido.

Generalmente, la detección temprana es la mejor opción, ya que un diagnóstico erróneo cuesta mucho más que una prueba de seguimiento innecesaria. Por lo tanto, las herramientas de cribado están diseñadas para minimizar los falsos negativos y aceptar algunos falsos positivos, que una prueba confirmatoria descarta posteriormente.

Las herramientas automatizadas de evaluación de modelos ahora analizan cada celda fuera de la diagonal principal, clasifican las confusiones más costosas y sugieren qué clases necesitan más datos de entrenamiento o una etiqueta combinada. También aplican umbrales automáticamente, transformando una comparación manual de matrices en una lista reducida clasificada.

Copiloto de GitHub El borrador incluye la importación, la llamada a la métrica y un gráfico de mapa de calor a partir de un breve comentario. Considere el borrador como un punto de partida; siempre confirme usted mismo el orden de los ejes y el argumento de etiqueta positiva, ya que una matriz transpuesta invierte todas las conclusiones.

Lo suficientemente grande como para que la clase más rara aún llene su fila con un recuento manejable; un puñado de muestras produce métricas que fluctúan drásticamente entre ejecuciones. La validación cruzada, que suma matrices en todos los pliegues, proporciona una imagen más estable que una pequeña división de prueba.

Resumir este post con: