C.W.K.
Stream
Lesson 04 of 06 · published

Perplexity, F1, Classification Metric

~18 min · metrics, classification, perplexity

Level 0Guesser
0 XP0/55 lessons0/10 achievements
0/150 XP to next level150 XP to go0% complete

Task shape 에 맞는 metric 골라

Perplexity, accuracy, precision, recall, F1, AUC — 고전 ML 의 빵과 버터 metric. LLM output 이 class label 또는 probability 로 줄어들 때 여전히 적용.

Perplexity

Perplexity 는 language model 이 텍스트 조각에 얼마나 놀라는지 측정. 낮을수록 좋음. 주로 base language model 평가에 관련 (이 model 이 자연 영어에 합리적 probability 할당해?), product feature 평가엔 X. Fine-tuning 이 model 망치지 않았다는 smoke test 로 유용.

Classification metric

Intent classification, content moderation, sentiment analysis, 또는 'output 에 label 매기기' task 의 표준 4 가지:

  • Accuracy — 전체 정답 비율. class 균형일 때만 유용.
  • Precision — positive 예측한 항목 중 실제 그런 비율. "늑대 잘못 외쳤어?"
  • Recall — 실제 positive 중 찾은 비율. "놓친 거 있어?"
  • F1 — precision 과 recall 의 harmonic mean. 불균형 binary classification 의 default reporting metric.
원칙: task 에 label 있을 때 precision 과 recall 분리해서 report. F1 만으로는 어느 쪽이 출혈인지 가려.

Multi-class 와 multi-label

Multi-class 문제엔 macro-F1 (class 간 unweighted average — class 동등 대우) 또는 weighted-F1 (support 로 weighted — class 빈도 reflect) 써. Macro 는 rare class 의 poor performance 처벌, weighted 는 user-perceived accuracy 에 가까움.

Multi-label (output 이 여러 class 에 속할 수 있음) 에서 F1 은 label 별로 계산 후 평균.

Confusion matrix 가 진단 도구

Single F1 숫자가 headline, confusion matrix 가 article. 어떤 class 가 어떤 다른 class 와 헷갈리는지 보여줘. Classification metric report 할 때 항상 confusion matrix log.

Code

Sklearn classification report·python
from sklearn.metrics import classification_report, confusion_matrix

y_true = ["refund", "complaint", "praise", "refund", "complaint", "praise", "refund"]
y_pred = ["refund", "complaint", "praise", "complaint", "complaint", "praise", "refund"]

print(classification_report(y_true, y_pred, digits=3))
# Per-class precision, recall, F1, support, then macro & weighted averages.

print(confusion_matrix(y_true, y_pred, labels=["refund", "complaint", "praise"]))
# Rows = true class, columns = predicted class. Off-diagonal = errors.
실전 perplexity — base model smoke test·python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = "meta-llama/Llama-3.2-1B"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)

text = "The quick brown fox jumps over the lazy dog."
ids = tok.encode(text, return_tensors="pt")
with torch.no_grad():
    loss = model(ids, labels=ids).loss
    perplexity = torch.exp(loss).item()
print(f"perplexity: {perplexity:.2f}")
# A reasonable English sentence on a 1B model: ~10-30.
# Above ~100 means something is broken.

External links

Exercise

Product 에 classification 단계 (intent routing, moderation, content tagging) 있으면 최근 eval 에 class 별 precision, recall, F1 계산. Confusion matrix print. 가장 count 높은 off-diagonal cell 이 다음 prompt-engineering 타깃.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.