텍스트 분류의 평가 지표

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로 배우는 텍스트 딥러닝

정확도

  • 전체 예측 중 정답 비율
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%
      • 그러나 부정 리뷰 분류에는 실패

 

  • 정밀도: 부정으로 판정했을 때의 신뢰도
  • 재현율: 부정 리뷰를 잡아내는 능력
  • F1 점수: 정밀도와 재현율의 균형
PyTorch로 배우는 텍스트 딥러닝

정밀도와 재현율

  • 정밀도: 올바른 양성 예측 / 양성으로 예측한 전체
  • 재현율: 올바른 양성 예측 / 실제 양성 전체
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: 0.6666666666666666
Recall: 0.5
  • 정밀도: 양성으로 예측한 것의 66.66%가 정확함
  • 재현율: 양성의 50%를 포착함
PyTorch로 배우는 텍스트 딥러닝

F1 점수

  • 정밀도와 재현율을 조화시킴
  • 불균형 클래스에 더 적합한 지표
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 점수 1 = 정밀도·재현율 모두 완벽
  • F1 점수 0 = 최악의 성능
PyTorch로 배우는 텍스트 딥러닝

유의사항

  • 다중 클래스 점수가 동일할 수 있음

    • 모델 성능이 좋음을 시사할 수 있음
  • 해석 시 항상 문제 맥락을 고려하십시오!

PyTorch로 배우는 텍스트 딥러닝

연습해 봅시다!

PyTorch로 배우는 텍스트 딥러닝

Preparing Video For Download...