Evaluatiemetrics voor tekstclassificatie

Deep Learning voor tekst met PyTorch

Shubham Jain

Instructor

Waarom evaluatiemetrics tellen

Spotlight op boekrecensies:

  • Stel een model voor dat het sentiment van recensies beoordeelt
  • Het model noemt een bestseller slecht beoordeeld. Accepteren we dat?
  • Gebruik evaluatiemetrics

Boekrecensie

Deep Learning voor tekst met PyTorch

RNN-modellen evalueren

# 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'Epoch: {epoch+1}, Loss: {loss.item()}')

outputs = rnn_model(X_test) _, predicted = torch.max(outputs, 1)
Deep Learning voor tekst met PyTorch

Accuracy

  • De verhouding correcte voorspellingen tot alle voorspellingen
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}")
Accuracy: 0.6666666666666666
Deep Learning voor tekst met PyTorch

Verder dan accuracy

  • 10.000 reviews: 9.800 positief
    • Een model dat altijd positief voorspelt: 98% accuracy
      • Het model mist negatieve reviews

 

  • Precision: zekerheid bij een negatieve label
  • Recall: hoe goed het model negatieve reviews vindt
  • F1-score: balans tussen precision en recall
Deep Learning voor tekst met PyTorch

Precision en recall

  • Precision: correct positief voorspeld / alle als positief voorspeld
  • Recall: correct positief voorspeld / alle echte positieven
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"Precision: {prec}") print(f"Recall: {rec}")
Precision: 0.6666666666666666
Recall: 0.5
Deep Learning voor tekst met PyTorch

Precision en recall

Precision: 0.6666666666666666
Recall: 0.5
  • Precision: 66,66% correct als positief voorspeld
  • Recall: ving 50% van de positieven
Deep Learning voor tekst met PyTorch

F1-score

  • Combineert precision en recall
  • Beter bij scheve klassen
from torchmetrics import F1Score
f1 = F1Score(task="binary", num_classes=2)
f1_score = f1(predicted, actual)
print(f"F1 Score: {f1_score}")
F1 Score: 0.5714285714285715
  • F1-score van 1 = perfecte precision en recall
  • F1-score van 0 = slechtste prestatie
Deep Learning voor tekst met PyTorch

Aandachtspunten

  • Multiclass-scores kunnen gelijk zijn

    • Kan op goede modelprestatie wijzen
  • Interpreteer altijd in de context van het probleem!

Deep Learning voor tekst met PyTorch

Laten we oefenen!

Deep Learning voor tekst met PyTorch

Preparing Video For Download...