Метрики оценки для классификации текста

Глубокое обучение для работы с текстом на PyTorch

Shubham Jain

Instructor

Зачем нужны метрики оценки

Анализ отзывов на книги:

  • Представьте модель, которая определяет тональность отзывов на книги
  • Модель утверждает, что бестселлер получил плохие отзывы. Можно ли ей доверять?
  • Используйте метрики оценки

Отзыв на книгу

Глубокое обучение для работы с текстом на PyTorch

Оценка RNN-моделей

# 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)
Глубокое обучение для работы с текстом на PyTorch

Точность (Accuracy)

  • Доля правильных предсказаний от общего числа предсказаний
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
Глубокое обучение для работы с текстом на PyTorch

За пределами точности

  • 10 000 отзывов: 9 800 положительных
    • Модель, всегда предсказывающая положительный результат: точность 98%
      • При этом модель не распознаёт отрицательные отзывы

 

  • Precision: уверенность в разметке отзыва как отрицательного
  • Recall: насколько хорошо модель выявляет отрицательные отзывы
  • F1 Score: баланс между Precision и Recall
Глубокое обучение для работы с текстом на PyTorch

Precision и Recall

  • Precision: верно предсказанные положительные / все предсказанные положительные
  • Recall: верно предсказанные положительные / все реально положительные
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
Глубокое обучение для работы с текстом на PyTorch

Precision и Recall

Precision: 0.6666666666666666
Recall: 0.5
  • Precision: 66,66% предсказаний верно отнесены к положительному классу
  • Recall: модель обнаружила 50% положительных примеров
Глубокое обучение для работы с текстом на PyTorch

F1-мера

  • Объединяет Precision и Recall
  • Лучше подходит для несбалансированных классов
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 = 1 — идеальные Precision и Recall
  • F1 Score = 0 — наихудший результат
Глубокое обучение для работы с текстом на PyTorch

Важные замечания

  • Метрики многоклассовой классификации могут совпадать

    • Это может свидетельствовать о хорошем качестве модели
  • При интерпретации результатов всегда учитывайте контекст задачи!

Глубокое обучение для работы с текстом на PyTorch

Давайте потренируемся!

Глубокое обучение для работы с текстом на PyTorch

Preparing Video For Download...