Métricas para medir la eficiencia de un modelo: callback
Resumen
Cuando entrenamos nuestros modelos requerimos de monitorear su desempeño durante el entrenamiento, esto nos dará tiempo de reacción para entender por qué rinden como rinden. En esta ocasión manejaremos callbacks personalizados para monitorear el desempeño de nuestra red en términos de precisión y pérdida.
Aplicando callbacks a nuestro modelo
Para esta ocasión crearemos un modelo llamado model_callbacks, virtualmente será idéntico al último modelo trabajado, pero cambiaremos levemente el comportamiento del entrenamiento cuando sea llamado.
Crearemos nuestro propio callback desde la clase Callback que nos ofrece Keras.
Podemos activar un callback en cualquier momento del ciclo de vida del modelo, para esta ocasión podemos elegir si activarlo al inicio de cada época, durante el entrenamiento o al final, para esta ocasión elegiremos el último caso.
Crearemos nuestra clase TrainingCallback que heredará de Callback, definiremos la función on_epoch_end que se activará cada que termine una época y recibirá como parámetros el objeto mismo, la época y los logs (que contendrán las métricas de la red).
Obtenemos la precisión de los logs y la comparamos, para esta ocasión determinaremos que el modelo se detenga si es mayor a 95% o 0.95, si es así, entonces daremos un pequeño mensaje pantalla y setearemos la variable self.model.stop_training en verdadero para detenerlo prematuramente.
from tensorflow.keras.callbacks import Callback
classTrainingCallback(Callback):defon_epoch_end(self, epoch, logs ={}):if logs.get("accuracy")>0.95:print("Lo logramos, nuestro modelo llego a 95%, detenemos nuestro modelo") self.model.stop_training =True
Para hacer efectivo este callback, creamos una instancia y lo inyectamos al momento de entrenar el modelo en el parámetro de callbacks, puedes notar que recibe una lista, por lo que puedes agregar cuantos quieras.
Puedes personalizar tus propios callbacks que podrás usar en diferentes etapas (entrenamiento, testing y predicción), para este ejemplo mostraremos en pantalla un mensaje según el inicio de cada etapa del entrenamiento.
Métricas clave para la evaluación de modelos mediante devoluciones de llamada:
Pérdida
La función de pérdida mide el error entre las predicciones del modelo y los valores objetivo verdaderos.
Una pérdida menor indica un mejor rendimiento.
Las funciones de pérdida comunes incluyen el error cuadrático medio (MSE) para tareas de regresión y la entropía cruzada categórica para tareas de clasificación.
Exactitud
La precisión mide la proporción de predicciones clasificadas correctamente.
Es una métrica simple e intuitiva para tareas de clasificación.
Sin embargo, puede resultar engañoso para conjuntos de datos desequilibrados, donde el modelo puede priorizar la predicción de la clase mayoritaria incluso si tiene un desempeño deficiente en la clase minoritaria.
Precisión
La precisión mide la proporción de predicciones positivas que realmente son correctas.
Es particularmente útil para tareas donde los falsos positivos tienen costos elevados.
Recordar
La recuperación mide la proporción de casos positivos reales que el modelo identifica correctamente.
Es importante para tareas en las que pasar por alto los verdaderos aspectos positivos puede tener consecuencias importantes.
Puntuación F1
La puntuación F1 es una métrica equilibrada que considera tanto la precisión como la recuperación.
Se calcula como la media armónica de precisión y recuperación.
Una puntuación F1 más alta indica un mejor rendimiento general entre precisión y recuperación.
AUC (Área bajo la curva ROC)
El AUC mide la capacidad del modelo para distinguir entre casos positivos y negativos en todos los umbrales posibles.
Es una métrica independiente del umbral que proporciona una evaluación más completa de la capacidad de discriminación del modelo.
Los Callbacks son útiles para tener visibilidad de los estados internos y las estadísticas del modelo durante el entrenamiento.
La gran ventaja, es que se puede visualizar información en puntos específicos indicados, y entender que está pasando con el rendimiento del modelo.
from tensorflow.keras.callbacks import Callback
OPCION 1
Se va mejorando el accuracy, si despues de 1 epochs (patience=1) no mejora, se detiene
Es decir, cuando detecta deterioro se detiene
early = tf.keras.callbacks.EarlyStopping(monitor='accuracy',patience=1)
Si no sabemos si nuestro modelo esta usando accuracy u otra metric para ver el avance de nuestro modelo, como podriamos validar que metricas se estan usando y asi poder actuar acorde?
Revisando la sección de compilación deberías poder ver la métrica. Por ejemplo, en la clase: