Estadísticos de Validación de un Modelo de Clasificación Supervisada#

Introducción#

En el campo del aprendizaje automático, la clasificación supervisada es una tarea fundamental que implica predecir la etiqueta de categoría de nuevas observaciones basándose en un conjunto de datos de entrenamiento etiquetado. Una parte crucial del desarrollo y evaluación de estos modelos es la validación, que nos permite estimar qué tan bien el modelo se desempeñará en el mundo real. La validación de modelos incluye una serie de estadísticos que proporcionan diversas perspectivas sobre la eficacia del modelo, como la exactitud, la precisión, la sensibilidad, entre otros. Estos estadísticos nos ayudan a comprender las fortalezas y debilidades de nuestro modelo, permitiéndonos realizar mejoras dirigidas y tomar decisiones informadas sobre su implementación.

La capacidad de un modelo para generalizar es esencial; sin embargo, no es raro encontrar modelos que, aunque muestran un alto rendimiento durante la fase de entrenamiento, fracasan al ser expuestos a nuevos datos. Esto puede deberse a fenómenos como el sobreajuste, donde el modelo aprende patrones específicos del conjunto de entrenamiento que no son generalizables. Por lo tanto, utilizar una metodología de validación rigurosa y comprender los estadísticos que evaluamos son pasos cruciales en el ciclo de vida del desarrollo de modelos.

Matriz de Confusión#

Uno de los instrumentos más básicos, pero poderosos, para evaluar el rendimiento de los modelos de clasificación es la matriz de confusión. Esta matriz es una tabla que permite la visualización del desempeño del modelo al mostrar las frecuencias de las predicciones en cada categoría, comparadas con las etiquetas reales. Las dimensiones de la matriz varían según el número de clases que el modelo intenta predecir.

La estructura de la matriz de confusión es la siguiente:

  • Verdaderos Positivos (VP): El modelo predijo correctamente la clase positiva.

  • Falsos Positivos (FP): El modelo predijo incorrectamente una clase como positiva cuando es negativa.

  • Verdaderos Negativos (VN): El modelo predijo correctamente la clase negativa.

  • Falsos Negativos (FN): El modelo predijo incorrectamente una clase como negativa cuando es positiva.

La matriz de confusión se ve típicamente así para un problema de clasificación binaria:

Predicción Positiva

Predicción Negativa

Clase Positiva

Verdaderos Positivos (VP)

Falsos Negativos (FN)

Clase Negativa

Falsos Positivos (FP)

Verdaderos Negativos (VN)

A partir de esta matriz, se pueden derivar varios estadísticos que nos proporcionan una comprensión más profunda del rendimiento del modelo. Estos incluyen medidas de la capacidad del modelo para identificar correctamente las clases positivas (sensibilidad), su precisión en la clasificación de ejemplos positivos (precisión), y la tasa a la que identifica correctamente las clases negativas (especificidad), entre otros.

La matriz de confusión sirve como base para calcular muchos de los estadísticos de validación más utilizados en la clasificación supervisada, permitiéndonos realizar una evaluación comprensiva y equilibrada del modelo.

En las siguientes secciones, profundizaremos en los estadísticos específicos derivados de la matriz de confusión y discutiremos cómo cada uno de ellos contribuye a una comprensión holística del rendimiento de un modelo de clasificación supervisada.

Estadísticos de Validación#

Exactitud (Accuracy)#

La exactitud es la proporción de predicciones correctas (tanto positivas como negativas) entre el total de casos examinados. Se calcula con la fórmula:

[ \text{Exactitud} = \frac{VP + VN}{VP + FN + FP + VN} ]

En scikit-learn, la exactitud se puede calcular fácilmente usando la función accuracy_score:

from sklearn.metrics import accuracy_score

# y_true son las etiquetas verdaderas, y y_pred son las etiquetas predichas por el modelo
exactitud = accuracy_score(y_true, y_pred)
print(f"Exactitud: {exactitud}")

Precisión (Precision)#

La precisión mide la proporción de predicciones positivas correctas en relación con el total de predicciones positivas. Su fórmula es:

\[ \text{Precisión} = \frac{VP}{VP + FP} \]

Para calcular la precisión en scikit-learn:

from sklearn.metrics import precision_score

precision = precision_score(y_true, y_pred)
print(f"Precisión: {precision}")

Sensibilidad (Recall) o Tasa de Verdaderos Positivos#

La sensibilidad, también conocida como recall o tasa de verdaderos positivos, mide la proporción de positivos reales que fueron identificados correctamente por el modelo. Se calcula con:

\[ \text{Sensibilidad} = \frac{VP}{VP + FN} \]

En scikit-learn, el recall se puede calcular con la función recall_score:

from sklearn.metrics import recall_score

sensibilidad = recall_score(y_true, y_pred)
print(f"Sensibilidad: {sensibilidad}")

Valor F1#

El valor F1 es el promedio armónico de la precisión y la sensibilidad, ofreciendo un balance entre ellos. Es especialmente útil cuando las clases son desbalanceadas. Se calcula con:

\[ \text{Valor F1} = 2 \cdot \frac{\text{Precisión} \cdot \text{Sensibilidad}}{\text{Precisión} + \text{Sensibilidad}} \]

Para calcular el valor F1 en scikit-learn:

from sklearn.metrics import f1_score

f1 = f1_score(y_true, y_pred)
print(f"Valor F1: {f1}")

Curva Precision-Recall y el Área Bajo la Curva (PR-AUC)#

La curva Precision-Recall muestra la relación entre la precisión del modelo (su capacidad para no etiquetar como positivo un negativo) y su sensibilidad (su capacidad para encontrar todos los positivos) a lo largo de diferentes umbrales. El área bajo esta curva (PR-AUC) puede ser un indicador del rendimiento general del modelo, especialmente en casos de clases desbalanceadas.

Para trazar la curva Precision-Recall y calcular el PR-AUC en scikit-learn:

from sklearn.metrics import precision_recall_curve, auc
import matplotlib.pyplot as plt

# Asumiendo que y_scores son las puntuaciones de decisión o probabilidades de clase positiva
precision, recall, thresholds = precision_recall_curve(y_true, y_scores)
pr_auc = auc(recall, precision)

plt.plot(recall, precision, marker='.', label=f'PR-AUC: {pr_auc}')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.legend()
plt.title('Curva Precision-Recall')
plt.show()

Estos estadísticos proporcionan una comprensión profunda del rendimiento de los modelos de clasificación supervisada. Al analizarlos en conjunto, podemos obtener una vista holística de las fortalezas y debilidades del modelo, permitiéndonos hacer ajustes informados y mejorar nuestra capacidad de predicción.

Note

Este contenido se enfoca en estadísticos de validación para problemas de clasificación binaria, pero la mayoría de ellos se pueden extender a problemas de clasificación multiclase.

Multiclase#

Para problemas de clasificación multiclase, la matriz de confusión y los estadísticos derivados de ella se extienden para acomodar múltiples clases. La matriz de confusión para un problema de clasificación multiclase tiene la siguiente estructura:

Predicción Clase 1

Predicción Clase 2

Predicción Clase N

Clase Real 1

VP1

FN1

FN1

Clase Real 2

FP2

VP2

FN2

Clase Real N

FP_N

FP_N

VN_N

A partir de esta matriz, se pueden calcular estadísticos como la exactitud, la precisión, la sensibilidad y el valor F1 para cada clase, así como estadísticos agregados que proporcionan una visión general del rendimiento del modelo.

En scikit-learn, la función classification_report proporciona un resumen detallado de estos estadísticos para problemas de clasificación multiclase:

from sklearn.metrics import classification_report

print(classification_report(y_true, y_pred))

Note

Estas métricas son útiles para evaluar el rendimiento de un modelo de clasificación supervisada, pero no son los únicos factores a considerar. Es importante tener en cuenta el contexto del problema y las necesidades específicas del negocio al seleccionar las métricas de evaluación.