Matriz de confusión, F1 y ROC
En simple: lee esto primero
Acertar «en general» no basta: hay que mirar qué tipo de errores comete el modelo, porque no todos cuestan lo mismo.
Un detector de cáncer que dice «sano» a todos acierta el 99 % si casi nadie tiene cáncer… y es inútil. Por eso contamos por separado las falsas alarmas y los casos que se escaparon.
- Precision: de los que marqué como positivos, ¿cuántos lo eran? (pocas falsas alarmas).
- Recall: de los positivos reales, ¿cuántos encontré? (que no se me escape ninguno).
- F1 combina ambos; la curva ROC muestra qué pasa al mover el umbral.
- matriz de confusión
- tabla de aciertos y errores: verdaderos/falsos positivos y negativos.
- falso positivo
- falsa alarma: dije «sí» y era «no».
- falso negativo
- se me escapó: dije «no» y era «sí».
- AUC
- el área bajo la curva ROC: 1 = perfecto, 0.5 = tirar una moneda.
Más abajo viene la versión completa, con fórmulas. Si una palabra aparece subrayada con puntos, pasa el mouse (o tócala) para ver qué significa.
Accuracy: el primer número
Sección titulada «Accuracy: el primer número»Va de 0 a 1, más alto es mejor (ojo: no es «incorrectas / total», pregunta del banco). Tamizando a 10 000 personas por una enfermedad con 1% de prevalencia, un modelo acierta 9 680: 96.8%, suena excelente. Pero trata igual todos los errores y no dice de qué tipo son.
La matriz de confusión
Sección titulada «La matriz de confusión»| predice 0 (negativo) | predice 1 (positivo) | |
|---|---|---|
| real 0 | TN (verdadero negativo) | FP (falsa alarma, «gritó lobo») |
| real 1 | FN (se escapó) | TP (verdadero positivo) |
La diagonal son los aciertos (TN, TP); fuera de ella, los dos tipos de error. Con «positivo = tiene la enfermedad»: FN = enfermo declarado sano (el error peligroso en un tamizaje); FP = sano marcado como enfermo.
Ejemplo de la slide (10 000 personas, 1%): TN = 9 600, FP = 300, FN = 20, TP = 80.
Precision, recall y F1
Sección titulada «Precision, recall y F1»En el ejemplo: precision , recall , . La media aritmética sería 0.51; la armónica se queda cerca del menor de los dos, así que no se puede «hacer trampa» sacando uno alto y el otro bajo. Un veredicto mucho más sobrio que 96.8%.
Se intercambian: bajar el umbral atrapa más enfermos (recall ↑, FN ↓) pero sube las falsas alarmas (precision ↓).
Calculadora de métricas: elige un escenario o escribe tu matriz
10 000 personas, 1% enfermas
Más métricas que conviene conocer
Sección titulada «Más métricas que conviene conocer»| Métrica | Fórmula | Cuándo mirarla |
|---|---|---|
| Especificidad (TNR) | cuántos sanos se descartan bien (pareja de la sensibilidad en medicina) | |
| FPR | especificidad | eje x de la ROC |
| Accuracy balanceada | clases desbalanceadas, alternativa honesta a la accuracy | |
| prioriza recall; prioriza precision | ||
| Curva PR / AP | precision vs recall al mover el umbral | positivos muy raros (fraude): más informativa que la ROC |
Barriendo el umbral: la curva ROC
Sección titulada «Barriendo el umbral: la curva ROC»El 0.5 es solo una elección. Moviéndolo, TPR (= recall) y FPR se intercambian. La ROC grafica ese trade-off para todos los umbrales; el AUC (área bajo la curva) resume la calidad del ranking: 1.0 perfecto, 0.5 azar. ROC/AUC juzgan los scores independientemente de dónde pongas el umbral; luego eliges el punto de operación que tu aplicación necesita.
El umbral es una perilla
El modelo produce un score (p. ej. la probabilidad). Todo lo que supera el umbral se declara positivo. Las curvas están escaladas por la prevalencia: con 1% de enfermos, la campana naranja es diminuta.
Caso real: cáncer de mama
Sección titulada «Caso real: cáncer de mama»scikit-learn breast cancer: 569 casos, 30 features; logística estandarizada, partición estratificada 75/25. Accuracy 0.958, precision 0.967, recall 0.967, F1 0.967, ROC-AUC 0.995; confusión TN = 50, FP = 3, FN = 3, TP = 87: solo 3 malignos se escaparon.
Ejercicio
Sección titulada «Ejercicio»TP = 40, FP = 10, FN = 60, TN = 890. Calcula accuracy, precision, recall y F1. ¿Qué harías con el umbral si esto es un tamizaje?
Ver solución
- Accuracy .
- Precision . Recall .
- .
En un tamizaje los FN (enfermos que se escapan) son lo más caro: bajar el umbral para subir el recall, aceptando más falsas alarmas que luego se confirman con otra prueba.
Autoevaluación
0/5 correctas · 0 respondidasEn código
Sección titulada «En código»from sklearn.metrics import (confusion_matrix, classification_report, roc_auc_score, roc_curve, precision_recall_curve, average_precision_score)
p = clf.predict_proba(X_test)[:, 1]y_hat = (p >= 0.5).astype(int)tn, fp, fn, tp = confusion_matrix(y_test, y_hat).ravel() # ¡orden de sklearn!print(classification_report(y_test, y_hat)) # precision, recall, F1 por claseprint('ROC-AUC', roc_auc_score(y_test, p), '· AP', average_precision_score(y_test, p))
# elegir el umbral en VALIDACIÓN para un recall mínimo de 0.95prec, rec, thr = precision_recall_curve(y_val, clf.predict_proba(X_val)[:, 1])t = thr[(rec[:-1] >= 0.95)].max()Para profundizar
Sección titulada «Para profundizar»Fuente ·ML_Course_Logistic_Regression_and_Classification.pdf (slides 29–36) · ML_Course/session-04c-evaluation.ipynb · BANCO_DE_PREGUNTAS_ML_PART_1.pdf