Métricas
Desliza para mostrar el menú
Hasta este punto, hemos utilizado la precisión como la métrica principal para evaluar el rendimiento del modelo. Sin embargo, la precisión tiene algunas limitaciones. Ahora discutiremos sus desventajas y presentaremos varias métricas adicionales —basadas en TP, TN, FP y FN— que ayudan a abordar estos problemas.
Precisión
La precisión representa la proporción de predicciones correctas:
accuracy=correct+incorrectcorrect=TP+TN+FP+FNTP+TNSin embargo, la exactitud tiene sus desventajas. Por ejemplo, imagina que intentas predecir si un paciente tiene una enfermedad rara. El conjunto de datos contiene 99.9% de pacientes sanos y solo 0.1% con la enfermedad. En este caso, predecir siempre que el paciente está sano daría una exactitud de 0.999, aunque ese modelo sería completamente inútil.
A estos conjuntos de datos se les llama desbalanceados, y en tales casos, la exactitud balanceada es una métrica más adecuada.
Exactitud balanceada
La exactitud balanceada calcula por separado la proporción de predicciones positivas correctas y la proporción de predicciones negativas correctas, luego las promedia. Este enfoque da igual importancia a cada clase, sin importar cuán desbalanceado esté el conjunto de datos.
balanced_accuracyaccuracy=21⋅PTP+21⋅NTN=P+NTP+TNDonde
- P=TP+FN - número total de instancias positivas (clase 1);
- N=TN+FP - número total de instancias negativas (clase 0).
En el ejemplo de la enfermedad rara, la exactitud balanceada de un modelo que siempre predice "sano" sería 0.5, lo que resalta efectivamente el problema. Así, este problema queda resuelto.
Sin embargo, la exactitud balanceada aún no distingue entre errores de tipo 1 y errores de tipo 2, al igual que la exactitud tradicional. Aquí es donde entran en juego la precisión y la recuperación.
Precisión
La métrica de precisión indica cuántos de los valores que el modelo predijo como positivos fueron realmente positivos. Es la proporción de verdaderos positivos sobre todas las predicciones positivas realizadas por el modelo:
precision=TP+FPTPAl utilizar la métrica de precisión, se puede comprender con qué frecuencia ocurre un error de tipo 1. Una alta precisión significa que los errores de tipo 1 son poco frecuentes, mientras que una baja precisión indica que estos errores ocurren con mayor frecuencia.
Recall
La métrica de recall muestra la proporción de casos positivos reales que el modelo predijo correctamente:
recall=TP+FNTPLa métrica de recall ayuda a comprender con qué frecuencia ocurre un error de tipo 2. Un recall alto significa que los errores de tipo 2 son poco frecuentes, mientras que un recall bajo indica que ocurren con frecuencia.
Sin embargo, tanto la precisión como el recall tienen limitaciones. Por ejemplo, un modelo que predice únicamente la clase positiva (1) logrará un recall perfecto, pero su precisión será baja. Por otro lado, un modelo que predice correctamente solo una instancia positiva y clasifica todo lo demás como negativo tendrá precisión perfecta, pero un recall muy bajo.
Esto demuestra que, aunque es sencillo construir un modelo con precisión perfecta o recall perfecto, es mucho más difícil lograr un buen desempeño en ambos. Por eso es importante considerar ambas métricas; afortunadamente, existe una métrica que las combina.
Puntuación F1
La puntuación F1 es la media armónica de la precisión y el recall. Se prefiere la media armónica sobre la media aritmética porque penaliza situaciones en las que uno de los valores (ya sea precisión o recall) es bajo, lo que la convierte en una medida más equilibrada del rendimiento de un modelo.
F1=precision1+recall12=precision+recall2⋅precision⋅recallLa puntuación F1 combina tanto la precisión como el recall en una sola métrica. Solo será alta si tanto la precisión como el recall son relativamente altos, lo que la convierte en una medida útil cuando se necesita equilibrar ambos tipos de errores.
La elección de la métrica adecuada depende de la tarea específica. Precisión (o precisión balanceada para conjuntos de datos desbalanceados) es intuitiva y proporciona una visión general del rendimiento global del modelo. Si se necesita un análisis más detallado sobre los tipos de errores que comete el modelo, precisión ayuda a identificar errores de tipo 1, mientras que recuperación resalta los errores de tipo 2. La puntuación F1 muestra cuán equilibrado está el modelo en cuanto a errores de tipo 1 y tipo 2.
Otra métrica comúnmente utilizada es ROC/AUC, sobre la cual puedes leer más en este artículo.
Métricas en Python
Scikit-learn proporciona implementaciones para todas estas métricas en el módulo sklearn.metrics:
from sklearn.metrics import accuracy_score, balanced_accuracy_score, precision_score, recall_score, f1_score
accuracy = accuracy_score(y_true, y_pred)
balanced_accuracy = balanced_accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
Si se desea obtener métricas como precisión, recall y F1-score de forma conjunta, sklearn ofrece la función classification_report():
12345678910111213import pandas as pd import seaborn as sns from sklearn.metrics import classification_report from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Display a classification report print(classification_report(y_test, y_pred))
Support se refiere al número de ocurrencias reales de cada clase en el conjunto de prueba. Macro avg calcula el promedio de cada métrica (precisión, recall, F1) entre todas las clases por igual, sin considerar el desbalance de clases. Weighted avg también promedia las métricas entre todas las clases, pero otorga mayor peso a las clases con más instancias (según su support).
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla