Skip to main content

Metricas para evaluar un modelo en machine learning

· 3 min read
Darvin Cotrina

Classification Metrics

Confusion Matrix

Predicted
Actual classPositiveNegative
PositiveTrue Positive (TP)False Negative (FN)
NegativeFalse Positive (FP)True Negative (TN)
from sklearn.metrics import confusion_matrix
confusion_matrix(y_true, y_pred)

Accuaracy

Usar Accuaracy cuando quieres medir la performance de un modelo de clasificacion. Es la proporcion de predicciones correctas sobre el total de predicciones realizadas.

  • Accuracy = TP+TNTP+TN+FP+FN\frac{TP + TN}{TP + TN + FP + FN}
from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)

Precision

Usar Precision cuanto quieres minimizar los falsos positivos (Errores de tipo I). Es la proporcion de predicciones correctas sobre el total de predicciones realizadas.

  • Precision = TPTP+FP\frac{TP}{TP + FP}
from sklearn.metrics import precision_score
precision_score(y_true, y_pred)

Recall

Usar Recall cuando quieres minimizar los falsos negativos (Errores de tipo II). Es la proporcion de predicciones correctas sobre el total de predicciones realizadas.

  • Recall = TPTP+FN\frac{TP}{TP + FN}
from sklearn.metrics import recall_score
recall_score(y_true, y_pred)

F1 Score

Usar F1 Score cuando quieres minimizar los falsos negativos y falsos positivos. Es la media armonica entre Precision y Recall.

  • F1 Score = 2PrecisionRecallPrecision+Recall\frac{2 * Precision * Recall}{Precision + Recall}
from sklearn.metrics import f1_score
f1_score(y_true, y_pred)

ROC Curve

Usar ROC Curve cuando quieres evaluar el rendimiento de un modelo de clasificacion binaria. Es una grafica de la tasa de verdaderos positivos (TPR) frente a la tasa de falsos positivos (FPR) para diferentes umbrales de probabilidad de clasificacion.

  • TPR = TPTP+FN\frac{TP}{TP + FN}
  • FPR = FPFP+TN\frac{FP}{FP + TN}
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt

fpr, tpr, thresholds = roc_curve(y_true, y_pred)
auc = roc_auc_score(y_true, y_pred)

plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % auc)
plt.plot([0, 1], [0, 1], 'k--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()

Classification Report

Usar Classification Report cuando quieres evaluar el rendimiento de un modelo de clasificacion. Es un resumen de las metricas de clasificacion para cada clase del problema.

from sklearn.metrics import classification_report
print(classification_report(y_true, y_pred))

Regression Metrics

Mean Absolute Error (MAE)

Usar MAE cuando quieres medir el error medio de un modelo de regresion. Es la media de la diferencia absoluta entre las predicciones y los valores reales.

  • MAE = 1ni=1nyiy^i\frac{1}{n} \sum_{i=1}^{n} |y_{i} - \hat{y}_{i}|
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_true, y_pred)

Mean Squared Error (MSE)

Usar MSE cuando quieres penalizar los errores mas grandes. Es la mejor metrica cuando le preocupa las grandes desviaciones en los errores.

  • MSE = 1ni=1n(yiy^i)2\frac{1}{n} \sum_{i=1}^{n} (y_{i} - \hat{y}_{i})^{2}
from sklearn.metrics import mean_squared_error
mean_squared_error(y_true, y_pred)

Root Mean Squared Error (RMSE)

Usar RMSE cuando quieres penalizar los errores mas grandes. Es la mejor metrica cuando desea una medida que sea menos sensible a los valores atipicos.

  • RMSE = 1ni=1n(yiy^i)2\sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_{i} - \hat{y}_{i})^{2}}
from sklearn.metrics import mean_squared_error
mean_squared_error(y_true, y_pred, squared=False)
# or
import numpy as np
np.sqrt(mean_squared_error(y_true, y_pred))

R-Squared (R2)

Usar R2 cuando quieres medir la varianza de los errores. Es la proporcion de la varianza de los errores y la varianza de los valores reales
  • R2 = 1i=1n(yiy^i)2i=1n(yiyˉi)21 - \frac{\sum_{i=1}^{n} (y_{i} - \hat{y}_{i})^{2}}{\sum_{i=1}^{n} (y_{i} - \bar{y}_{i})^{2}}
from sklearn.metrics import r2_score
r2_score(y_true, y_pred)