Compromiso entre precisión y recuperación
Cuando se trabaja con tareas de clasificación, a menudo aparece el término «compromiso entre precisión y recuperación ». ¿De dónde viene?
Por lo general, se elige la clase con mayor probabilidad para asignar el documento. Pero, ¿qué pasa si la probabilidad máxima es igual a 0.1? ¿Deberías considerar que ese documento pertenece a esta clase con solo un 10 % de probabilidad?
La respuesta varía según el problema en cuestión. Es posible añadir un umbral mínimo para aceptar la clasificación, y al cambiar el umbral, los valores de precisión y recuperación se mueven en direcciones opuestas.
Se cargan las variables y_true y el modelo model. Además, si la probabilidad es inferior al umbral, el documento se asignará a « DEFAULT_CLASS » (elegido como clase « 2 »).
Este ejercicio forma parte del curso
Redes neuronales recurrentes (RNN) para el modelado del lenguaje con Keras
Instrucciones del ejercicio
- Utiliza el método «
.predict()» para obtener las probabilidades de cada clase y guárdalas en la variable «pred_probabilities». - Acepta la probabilidad máxima solo si es mayor o igual que
0.5y almacena los resultados en la variabley_pred_50. - Utiliza las funciones «
np.argmax()» y «np.max()» para hacer lo mismo con un umbral igual a «0.8». - Imprime la variable
trade_offcon todas las métricas.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Get probabilities for each class
pred_probabilities = model.____(X_test)
# Thresholds at 0.5 and 0.8
y_pred_50 = [np.argmax(x) if np.max(x) >= ____ else DEFAULT_CLASS for x in pred_probabilities]
y_pred_80 = [np.____(x) if np.____(x) >= 0.8 else DEFAULT_CLASS for x in pred_probabilities]
trade_off = pd.DataFrame({
'Precision_50': precision_score(y_true, y_pred_50, average=None),
'Precision_80': precision_score(y_true, y_pred_80, average=None),
'Recall_50': recall_score(y_true, y_pred_50, average=None),
'Recall_80': recall_score(y_true, y_pred_80, average=None)},
index=['Class 1', 'Class 2', 'Class 3'])
____