La selección de métricas es un aspecto crítico en la evaluación de modelos de Machine Learning, ya que cada modelo genera múltiples resultados que pueden ser analizados y comparados en función de diversas características y objetivos.
Una métrica es una medida cuantitativa que describe el desempeño de un modelo, y se utiliza para evaluar y comparar diferentes modelos en diferentes escenarios. La elección adecuada de métricas es clave para seleccionar el modelo que mejor se ajuste a los objetivos del negocio.
Entre las métricas más comunes se encuentran:
- Precisión: mide el número de predicciones correctas.
- Recall: mide la cantidad de casos positivos detectados.
- F1-score: combina la precisión y el recall en una sola métrica.
Es importante tener en cuenta que no existe una métrica ideal para todos los modelos y situaciones. La selección de la métrica dependerá del problema que se está tratando de resolver, el tipo de datos que se están utilizando, y el costo asociado con diferentes tipos de errores.
En última instancia, el objetivo es encontrar la métrica que mejor refleje los intereses de la organización.
La selección de métricas para evaluar modelos es una parte fundamental del proceso de construcción y validación de modelos de Machine Learning (ML). Las métricas son medidas numéricas que se utilizan para evaluar el desempeño de un modelo en particular, con el objetivo de determinar qué tan bien está funcionando el modelo para el problema específico que se está resolviendo.
Existen varias métricas que se pueden seleccionar para evaluar el desempeño de un modelo, y cada una de ellas se enfoca en diferentes aspectos del desempeño del modelo. A continuación, se describen algunas de las métricas más comunes utilizadas para evaluar modelos de clasificación y regresión:
Métricas para modelos de clasificación:
-
Exactitud (Accuracy): La exactitud es la proporción de predicciones correctas realizadas por el modelo. Esta métrica es útil cuando la distribución de las clases de la variable objetivo es relativamente equilibrada.
-
Precisión (Precision): La precisión se refiere a la fracción de predicciones positivas que son verdaderas positivas. Es decir, la precisión mide cuántos de los valores que el modelo dijo que eran positivos son realmente positivos. Esta métrica es útil cuando se desea minimizar el número de falsos positivos.
-
Sensibilidad (Recall): La sensibilidad mide la fracción de verdaderos positivos que son detectados por el modelo. Es decir, la sensibilidad mide qué tan bien el modelo detecta los casos positivos. Esta métrica es útil cuando se desea minimizar el número de falsos negativos.
-
Área bajo la curva ROC (ROC-AUC): El ROC-AUC es una métrica que evalúa la capacidad de un modelo para distinguir entre clases. Se mide el área bajo la curva ROC, que representa la proporción de verdaderos positivos en función de la tasa de falsos positivos. Un valor de ROC-AUC cercano a 1 indica que el modelo puede distinguir claramente entre las clases, mientras que un valor cercano a 0,5 indica que el modelo no puede distinguir entre las clases.
Métricas para modelos de regresión:
-
Error absoluto medio (MAE): El MAE mide el error promedio que se comete al predecir los valores de la variable objetivo. Esta métrica es útil cuando se desea obtener una medida de cuánto se desvía el modelo de las predicciones verdaderas.
-
Error cuadrático medio (MSE): El MSE es similar al MAE, pero se elevan los errores al cuadrado. Esta métrica es útil cuando se desea penalizar los errores grandes de manera desproporcionada.
-
R cuadrado (R2): El R-cuadrado mide qué proporción de la variabilidad en los datos es explicada por el modelo. Cuanto mayor sea el valor de R-cuadrado, mejor será el ajuste del modelo.
En resumen, la selección de métricas adecuadas en la evaluación de modelos depende del problema que se está resolviendo y de los objetivos específicos del proyecto de ML. Es importante seleccionar las métricas que mejor se ajusten a las necesidades de la solución, para poder monitorizar el desempeño del modelo de forma efectiva y poder evaluar su correcta implementación.
Una de las formas más comunes de evaluar modelos de machine learning es utilizando diferentes métricas de rendimiento. Existen muchas métricas para evaluar modelos, desde las más sencillas hasta las más complejas.
Por ejemplo, si estamos trabajando en un problema de clasificación binaria, podemos utilizar la "exactitud" como métrica de rendimiento. La exactitud mide la proporción de casos donde el modelo clasifica correctamente una observación. Esta métrica es sencilla de entender y calcular pero puede no ser suficiente en casos donde los datos están desbalanceados o donde una categoría es más importante que otra.
Una métrica más completa en estos casos es la "sensibilidad" o el "recall". La sensibilidad mide la proporción de observaciones positivas que son correctamente detectadas por el modelo. Es decir, representa la capacidad del modelo para detectar correctamente los casos positivos. Esta métrica es importante en problemas donde la detección de una categoría es más relevante que en la otra.
Por último, otra métrica importante es la "precisión". La precisión mide la proporción de observaciones clasificadas como positivas que son realmente positivas. Es decir, representa la capacidad del modelo para evitar falsos positivos. Esta métrica es especialmente importante en problemas donde los costos de los errores son asimétricos.
En resumen, la elección de la métrica de evaluación dependerá del tipo de problema y de las prioridades del usuario. Es importante evaluar varias métricas y considerar su interpretación en el contexto del problema que se está resolviendo.
Un ejemplo práctico en Python
Supongamos que tenemos un modelo clasificador binario y queremos evaluar su desempeño. A continuación se muestra cómo seleccionar algunas métricas comunes. Primero, importamos las librerías necesarias y cargamos los datos:
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# Cargamos los datos
data = load_breast_cancer(as_frame=True)
X = data['data']
y = data['target']
# Dividimos en train y test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
Luego, entrenamos el modelo y hacemos las predicciones:
# Creamos el modelo de logistic regression
model = LogisticRegression(random_state=1)
# Entrenamos el modelo
model.fit(X_train, y_train)
# Hacemos las predicciones
y_pred = model.predict(X_test)
Finalmente, evaluamos el desempeño del modelo utilizando varias métricas:
# Evaluamos el desempeño del modelo
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
print('Accuracy:', accuracy)
print('Precision:', precision)
print('Recall:', recall)
print('F1 Score:', f1)
Las métricas seleccionadas para evaluar el modelo son: exactitud (accuracy), precisión (precision), sensibilidad (recall) y la F1 Score. Estas métricas son útiles porque proporcionan diferentes perspectivas del desempeño del modelo. Importante recordar que el conjunto de métricas escogido puede depender del contexto y los objetivos del modelo. Es decir, si estamos trabajando en un problema de diagnóstico médico, la precisión puede ser más importante que la sensibilidad.
-
Introducción a FastApi y Deploy de modelos de Machine Learning.
-
Preparación de datos y entrenamiento de modelos de Machine Learning.
-
Selección de modelos y validación de resultados.
-
Selección de métricas para evaluar modelos.
-
Creación de una API RESTful para la exposición de modelos.
-
Configuración de ambiente de desarrollo y producción.
-
Creación y configuración de base de datos para almacenamiento de datos.
-
Pruebas de integración para validar la API.
-
Gestión de paquetes y dependencias con herramientas como Pipenv.
-
Integración con herramientas de automatización de procesos de CI/CD para despliegue continuo de cambios en producción.