Métricas de evaluación para la clasificación de textos

Deep Learning para texto con PyTorch

Shubham Jain

Instructor

Por qué son importantes las métricas de evaluación

"Enfoque en las reseñas de libros:

  • Imagina un modelo que evalúa el sentimiento de las reseñas de libros
  • El modelo afirma que una novela superventas tiene malas reseñas. ¿Aceptamos esto?
  • Utiliza métricas de evaluación

Reseña de libro{{1}}"

Deep Learning para texto con PyTorch

Evaluación de modelos RNN

"`python

Initialize model, criterion, and optimizer

rnn_model = RNNModel(input_size, hidden_size, num_layers, num_classes) ...

Model training

for epoch in range(10): outputs = rnn_model(X_train) ... print(f'Época: {epoch+1}, Pérdida: {loss.item()}') `

----CODE_GLUE---- `python

outputs = rnn_model(X_test) _, predicted = torch.max(outputs, 1) `{{1}}"

Deep Learning para texto con PyTorch

Exactitud

"- La proporción de predicciones correctas respecto al total de predicciones

from torchmetrics import Accuracy

actual = torch.tensor([0, 1, 1, 0, 1, 0]) predicted = torch.tensor([0, 0, 1, 0, 1, 1])
accuracy = Accuracy(task=\"binary\", num_classes=2)
acc = accuracy(predicted, actual) print(f\"Accuracy: {acc}\")

out Precisión: 0.6666666666666666{{5}}"

Deep Learning para texto con PyTorch

Más allá de la precisión

"- 10.000 reseñas: 9.800 son positivas

 - Un modelo que siempre predice positivo: 98% de precisión
  • El modelo no logró clasificar las reseñas negativas
  • Precisión: confianza al etiquetar una reseña como negativa
  • Exhaustividad: qué tan bien detecta el modelo las reseñas negativas
  • Puntuación F1: equilibrio entre precisión y exhaustividad {{5}}"
Deep Learning para texto con PyTorch

Precisión y exhaustividad

"- Precisión: observaciones positivas correctamente predichas / total de positivos predichos

  • Exhaustividad (Recall): observaciones positivas correctamente predichas / todas las observaciones en la clase positiva
from torchmetrics import Precision, Recall

precision = Precision(task=\"binary\", num_classes=2) recall = Recall(task=\"binary\", num_classes=2)
prec = precision(predicted, actual) rec = recall(predicted, actual)
print(f\"Precisión: {prec}\") print(f\"Exhaustividad: {rec}\")

out Precisión: 0.6666666666666666 Recall: 0.5{{4}}"

Deep Learning para texto con PyTorch

Precisión y exhaustividad

"out Precisión: 0.6666666666666666 Recall: 0.5

  • Precisión: 66,66% predicho correctamente como positivo
  • Recall: se capturó el 50% de los positivos{{2}}"
Deep Learning para texto con PyTorch

Puntuación F1

"- Armoniza la precisión y el recall

  • Mejor medida para clases desbalanceadas
from torchmetrics import F1Score
f1 = F1Score(task=\"binary\", num_classes=2)
f1_score = f1(predicted, actual)
print(f\"Puntuación F1: {f1_score}\")
Puntuación F1: 0.5714285714285715
  • Puntuación F1 de 1 = precisión y exhaustividad perfectas
  • Puntuación F1 de 0 = peor rendimiento {{4}}"
Deep Learning para texto con PyTorch

Consideraciones

"- Los núcleos multiclase pueden ser idénticos

  • Puede indicar un buen rendimiento del modelo
  • ¡Siempre ten en cuenta el problema al interpretar los resultados!{{2}}"
Deep Learning para texto con PyTorch

Es hora de la práctica.

Deep Learning para texto con PyTorch

Preparing Video For Download...