Precision y recall
Introducción
En el ámbito de la inteligencia artificial, especialmente dentro de los modelos de machine learning, precision y recall son métricas fundamentales para evaluar la capacidad de un modelo a la hora de clasificar correctamente las muestras. Estas métricas son cruciales porque permiten balancear entre la cantidad de falsos positivos y falsos negativos que genera el modelo. En este artículo, exploraremos en detalle cómo calcular y entender estas métricas, así como los errores comunes a evitar.
Explicación principal con ejemplos
Concepto básico
Precision se refiere al porcentaje de predicciones correctas (positivos verdaderos) entre todas las predicciones que el modelo ha hecho como positivos. Matemáticamente:
\[ \text{Precision} = \frac{\text{Verdaderos Positivos}}{\text{Verdaderos Positivos + Falsos Positivos}} \]
Recall, por otro lado, mide cuántos de los verdaderos positivos el modelo ha detectado. Se calcula como:
\[ \text{Recall} = \frac{\text{Verdaderos Positivos}}{\text{Verdaderos Positivos + Falsos Negativos}} \]
Ejemplo práctico
Consideremos un modelo de machine learning para clasificar imágenes de tumoraciones en mamografías. Supongamos que tenemos los siguientes resultados:
- Verdaderos Positivos (TP): 50
- Falsos Positivos (FP): 10
- Verdaderos Negativos (TN): 90
- Falsos Negativos (FN): 5
Entonces, la precision y recall son:
\[ \text{Precision} = \frac{50}{50 + 10} = 83.3\% \] \[ \text{Recall} = \frac{50}{50 + 5} = 90.9\% \]
Visualización
A menudo es útil visualizar estos valores en un diagrama de matriz de confusión:
import matplotlib.pyplot as plt
import numpy as np
# Datos de la matriz de confusión
confusion_matrix = [[85, 10], [5, 40]]
# Crear un heatmap para la matriz de confusión
plt.imshow(confusion_matrix, interpolation='nearest', cmap=plt.cm.Blues)
plt.title('Matriz de Confusión')
plt.colorbar()
tick_marks = np.arange(2)
plt.xticks(tick_marks, ['Negativo', 'Positivo'])
plt.yticks(tick_marks, ['Negativo', 'Positivo'])
# Mostrar los valores en el heatmap
thresh = confusion_matrix.max() / 2.
for i in range(confusion_matrix.shape[0]):
for j in range(confusion_matrix.shape[1]):
plt.text(j, i, format(confusion_matrix[i, j], 'd'),
ha="center", va="center",
color="white" if confusion_matrix[i, j] > thresh else "black")
plt.tight_layout()
plt.ylabel('Verdadero valor')
plt.xlabel('Predicción')
plt.show()
Errores típicos / trampas
- Interpretación incorrecta: A menudo se confunde recall con precisión. Recordemos que recall mide la cantidad de verdaderos positivos identificados, mientras que precisión mide cuántos de los positivos predichos son realmente correctos.
- Balancear recall y precision: En problemas de clasificación desbalanceados (donde una clase tiene mucho más datos que otra), es fácil olvidarse del balance entre recall y precisión. Se puede dar prioridad a un valor sobre el otro, pero esto debe ser deliberado.
- Métricas individuales vs. conjuntas: A menudo se evalúa precision o recall en silos. Sin embargo, es crucial considerar cómo interactúan estas métricas para obtener una visión completa del desempeño del modelo.
Checklist accionable
- Entender el problema de negocio: Antes de empezar a optimizar precision o recall, asegúrate de entender completamente los requisitos del problema y qué significa un buen balance entre ambos.
- Usar la F1-score: Para obtener una métrica conjunta que equilibre precisión y recall, calcula la F1-score (promedio aritmético ponderada entre precision y recall).
- Validación cruzada: Asegúrate de usar validación cruzada para evaluar el modelo en múltiples particiones del conjunto de datos.
- Análisis por clase: Si es un problema multiclase, analiza cada clase individualmente para entender dónde se puede mejorar la precisión y recall.
- Métricas adicionales: Considera otras métricas como AUC-ROC y precision-recall curve (PRC) para una evaluación más completa.
Cierre con "Siguientes pasos"
Siguientes pasos
- Explorar precision-recall curve (PRC): Visualiza cómo la recall cambia a medida que se ajusta el umbral de decisión.
- Aprender sobre AUC-ROC: Comprende qué significa el área bajo la curva ROC y cuándo es apropiado usarla en lugar del PRC.
- Implementar validación cruzada regularmente: Asegúrate de que tus métricas sean consistentes a través de diferentes particiones del conjunto de datos.
Probemos nuestro conocimiento en precisión y recall con la siguiente pregunta: ¿Qué significa un valor alto de F1-score?