AI/AI TECH

[sklearn.metrics] 분류형 평가지표 자세히 분석하기

i-moo 2025. 11. 23. 16:21
반응형

✔ confusion_matrix

실제 값(y_true)과 예측 값(y_pred)을 비교하여 오차 행렬을 반환한다.
ConfusionMatrixDisplay : 오차 행렬을 시각화 할 수 있는 모듈

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

cm = confusion_matrix(y_test, y_pred)
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot(cmap="Blues")

cm 오차행렬 : train set [[1167 45] [ 27 108]]

 

 

 

 

 

 

 

 

여러 모델을 학습 시켜보면서 오차행렬을 구하고, 오차행렬을 통해 평가지표를 만든다.
각 모델마다 평가지표를 비교해서 최종 모델을 선택한다.

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

accuracy_score(y_train, y_pred)  # 정확도
precision_score(y_train, y_pred) # 정밀도
recall_score(y_train, y_pred)    # 재현율/민감도
f1_score(y_train, y_pred)        # F1 score

✔ classification_report

클래스별 precision, recall, f1-score를 한 번에 출력.

from sklearn.metrics import classification_report

classification_report(y_test, y_pred)

노란선 위에는 0클래스와 1클래스의 각각에대한 precision, recall, f1-score 결과값 표시.

노란선 아래는 전체의 accuracy와
precision의 평균, recall의 평균, f1-score의 평균을 나타낸다.

 

accuracy는 전체 데이터에대한 정확도로 (precision, recall, f1-score 값과 관계없이) 독립적인 계산이 이루어짐. 

precision - macro avg = (0.98 + 0.71) / 2 = 0.84
precision - weighted avg = ((0.98 * 1212) + (0.71 * 135)) / 1347 = 0.95

▶️ 다중분류에서의 평가지표

  • micro : 전체 샘플 기준으로 계산 -> micro precision = micro recall = micro f1-score = accuracy
  • macro : 클래스별 점수 계산 후 단순 평균 (클래스 불균형에 민감하다)
  • weighted : 클래스별 데이터 수로 가중 평균 (불균형 해결용)

이진분류에서는 average가 default로 average="binary"로 되어있다.

from sklearn.metrics import precision_score, recall_score, f1_score

print(precision_score(y_test, y_pred, average="macro"))
print(precision_score(y_test, y_pred, average="micro"))
print(precision_score(y_test, y_pred, average="weighted"))


print(recall_score(y_test, y_pred, average="micro"))
print(f1_score(y_test, y_pred, average="weighted"))

📌 데이터 성격에따라 봐야하는 평가지표도 다르다.

  • 불균형 데이터(의료, 사기탐지) → Recall, F1, PR-AUC
  • 스팸 필터링 → Precision 우선
  • 균형 데이터 → F1, Accuracy
  • 전체 성능 평가 → ROC-AUC
  • 높은 확신도 요구 → Precision
  • 민감도 높은 문제(질병) → Recall

 

반응형