Métricas
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 e introduciremos varias métricas adicionales — basadas en VP, VN, FP y FN — que ayudan a abordar estos problemas.
Precisión
La precisión representa la proporción de predicciones correctas:
precisioˊn=correctas+incorrectascorrectas=VP+VN+FP+FNVP+VNSin embargo, la precisión 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 resultaría en una precisión de 0.999, aunque dicho modelo sería completamente inútil.
A estos conjuntos de datos se les llama desbalanceados, y en tales casos, la precisión balanceada es una métrica más adecuada.
Precisión equilibrada
La precisión equilibrada calcula por separado la proporción de predicciones positivas correctas y la proporción de predicciones negativas correctas, luego las promedia. Este enfoque otorga igual importancia a cada clase, independientemente de 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 positivas (clase 0).
En el ejemplo de enfermedad rara, la precisión equilibrada de un modelo que siempre predice "saludable" sería 0.5, lo que resalta efectivamente el problema. Por lo tanto, este problema se aborda.
Sin embargo, la precisión equilibrada aún no distingue entre errores de tipo 1 y errores de tipo 2, al igual que la precisión regular. 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 indica que los errores de tipo 1 son poco frecuentes, mientras que una baja precisión señala 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=precision=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 mayor 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 ambas métricas. Por ello, es importante considerar ambas métricas; afortunadamente, existe una métrica que las combina.
Puntaje F1
El puntaje F1 es la media armónica de la precisión y la exhaustividad (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 exhaustividad) es bajo, lo que la convierte en una medida más equilibrada del rendimiento de un modelo.
F1=precision1+recall12=precision+recall2⋅precision⋅recallEl puntaje F1 combina tanto la precisión como la exhaustividad en una sola métrica. Solo será alto si tanto la precisión como la exhaustividad son relativamente altas, por lo que es 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. La exactitud (o exactitud 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 de los tipos de errores que comete el modelo, la precisión ayuda a identificar errores de tipo 1, mientras que la exhaustividad resalta los errores de tipo 2. El puntaje F1 muestra cuán equilibrado está el modelo en términos de ambos tipos de errores.
Otro métrico comúnmente utilizado es ROC/AUC, sobre el 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 deseas obtener métricas como precisión, recall y F1-score todas a la vez, sklearn proporciona 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))
Soporte se refiere al número de ocurrencias reales de cada clase en el conjunto de prueba. Promedio macro calcula el promedio de cada métrica (precisión, recall, F1) entre todas las clases por igual, sin considerar el desbalance de clases. Promedio ponderado también promedia las métricas entre todas las clases, pero otorga mayor peso a las clases con más instancias (basado en su soporte).
¡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
Awesome!
Completion rate improved to 4.17
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 e introduciremos varias métricas adicionales — basadas en VP, VN, FP y FN — que ayudan a abordar estos problemas.
Precisión
La precisión representa la proporción de predicciones correctas:
precisioˊn=correctas+incorrectascorrectas=VP+VN+FP+FNVP+VNSin embargo, la precisión 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 resultaría en una precisión de 0.999, aunque dicho modelo sería completamente inútil.
A estos conjuntos de datos se les llama desbalanceados, y en tales casos, la precisión balanceada es una métrica más adecuada.
Precisión equilibrada
La precisión equilibrada calcula por separado la proporción de predicciones positivas correctas y la proporción de predicciones negativas correctas, luego las promedia. Este enfoque otorga igual importancia a cada clase, independientemente de 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 positivas (clase 0).
En el ejemplo de enfermedad rara, la precisión equilibrada de un modelo que siempre predice "saludable" sería 0.5, lo que resalta efectivamente el problema. Por lo tanto, este problema se aborda.
Sin embargo, la precisión equilibrada aún no distingue entre errores de tipo 1 y errores de tipo 2, al igual que la precisión regular. 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 indica que los errores de tipo 1 son poco frecuentes, mientras que una baja precisión señala 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=precision=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 mayor 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 ambas métricas. Por ello, es importante considerar ambas métricas; afortunadamente, existe una métrica que las combina.
Puntaje F1
El puntaje F1 es la media armónica de la precisión y la exhaustividad (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 exhaustividad) es bajo, lo que la convierte en una medida más equilibrada del rendimiento de un modelo.
F1=precision1+recall12=precision+recall2⋅precision⋅recallEl puntaje F1 combina tanto la precisión como la exhaustividad en una sola métrica. Solo será alto si tanto la precisión como la exhaustividad son relativamente altas, por lo que es 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. La exactitud (o exactitud 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 de los tipos de errores que comete el modelo, la precisión ayuda a identificar errores de tipo 1, mientras que la exhaustividad resalta los errores de tipo 2. El puntaje F1 muestra cuán equilibrado está el modelo en términos de ambos tipos de errores.
Otro métrico comúnmente utilizado es ROC/AUC, sobre el 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 deseas obtener métricas como precisión, recall y F1-score todas a la vez, sklearn proporciona 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))
Soporte se refiere al número de ocurrencias reales de cada clase en el conjunto de prueba. Promedio macro calcula el promedio de cada métrica (precisión, recall, F1) entre todas las clases por igual, sin considerar el desbalance de clases. Promedio ponderado también promedia las métricas entre todas las clases, pero otorga mayor peso a las clases con más instancias (basado en su soporte).
¡Gracias por tus comentarios!