7.18.3 EP07_03 🟡 Evaluación por Matriz de Confusión
Un clasificador binario de calidad de soldadura fue entrenado y probado en una línea de producción. Para cada pieza inspeccionada, el sistema registró la etiqueta real (obtenida por un especialista) y la etiqueta predicha por el clasificador, donde 1 representa “defectuosa” y 0 representa “conforme”.
La gerencia de calidad quiere saber no solo la exactitud del sistema, sino también su precisión (cuando el sistema señala un defecto, ¿con qué frecuencia está en lo correcto?) y su revocación (de todas las piezas realmente defectuosas, ¿cuántas logró identificar el sistema?) — la distinción discutida en la sección de evaluación de clasificadores del capítulo.
7.18.3.1 📋 Directrices de Implementación
- Cantidad: Leer el entero \(N\) (número de piezas inspeccionadas).
- Datos de cada pieza: Para cada una de las \(N\) piezas, leer dos enteros — la etiqueta real \(y\) y la etiqueta predicha \(\hat y\) (ambas \(\in \{0, 1\}\)).
- Matriz de confusión: Considerando la clase
1(defectuosa) como positiva, contar:- \(VP\) (Verdadero Positivo): \(y=1\) y \(\hat y=1\);
- \(FP\) (Falso Positivo): \(y=0\) y \(\hat y=1\);
- \(FN\) (Falso Negativo): \(y=1\) y \(\hat y=0\);
- \(VN\) (Verdadero Negativo): \(y=0\) y \(\hat y=0\).
- Métricas: Calcular \[ \text{Exactitud} = \frac{VP+VN}{N}, \quad \text{Precisión} = \frac{VP}{VP+FP}, \quad \text{Revocación} = \frac{VP}{VP+FN}. \]
- Casos degenerados: Si \(VP+FP=0\) (ninguna predicción positiva), imprimir
Precisao: indefinida. Si \(VP+FN=0\) (ningún caso positivo real), imprimirRevocacao: indefinida. - Redondeo: Todas las métricas numéricas deben redondearse a 4 decimales (redondeo half away from zero) solo en la visualización.
7.18.3.2 📌 Restricciones Computacionales
- Convención de clase positiva fija: la clase
1es siempre la clase positiva en este ejercicio, independientemente de su frecuencia relativa. - Protección contra división por cero: implemente los casos degenerados del punto 5 antes de realizar la división.
- Orden de salida: siga exactamente el orden especificado en la sección de salida, incluso en los casos degenerados.
7.18.3.3 🧠 Fundamentación Teórica
| Métrica | Pregunta que responde | ¿Sensible a desbalanceo? |
|---|---|---|
| Exactitud | ¿Qué fracción de las piezas fue clasificada correctamente? | Sí — puede enmascarar errores en la clase minoritaria |
| Precisión | De las piezas señaladas como defectuosas, ¿cuántas realmente lo son? | Penaliza falsos positivos |
| Revocación | De las piezas realmente defectuosas, ¿cuántas fueron detectadas? | Penaliza falsos negativos |
En un contexto industrial, una revocación baja es frecuentemente más grave que una precisión baja: dejar pasar una pieza defectuosa (falso negativo) tiende a ser más costoso que inspeccionar manualmente una pieza buena señalada por error (falso positivo).
7.18.3.4 📦 Especificación de Entrada y Salida (VPL)
Entrada:
- Línea 1: Entero \(N\).
- Siguientes \(N\) líneas: dos enteros por línea — \(y\) y \(\hat y\), separados por espacio.
Salida (en este orden exacto):
VP=<int> FP=<int> FN=<int> VN=<int>
Acuracia: <valor o métrica indefinida>
Precisao: <valor o indefinida>
Revocacao: <valor o indefinida>
7.18.3.5 📌 Ejemplos
| Entrada | Salida | Observación |
|---|---|---|
| 4 1 1 0 1 1 0 0 0 |
VP=1 FP=1 FN=1 VN=1 Acuracia: 0.5000 Precisao: 0.5000 Revocacao: 0.5000 |
Un error de cada tipo. |
| 3 0 0 0 0 0 0 |
VP=0 FP=0 FN=0 VN=3 Acuracia: 1.0000 Precisao: indefinida Revocacao: indefinida |
Ningún caso positivo real ni predicho. |
%%writefile EP07_03.py
# Código PythonOverwriting EP07_03.py
TestSuite("EP07_03.py").run()✔️ EP07_03.cases ya existe en casos/
📋 5 caso(s) cargado(s) de casos/EP07_03.cases
🔍 Probando Python: EP07_03.py
⚠️ EP07_03.py: archivo vacío (menos de 3 líneas). Pruebas omitidas.