logo

혼동 행렬

혼동 행렬

혼동 행렬 (Confusion Matrix)

from sklearn.metrics import * # sklearn.metrics 모듈에서 모든 함수 불러오기
confusion_matrix(y_test, y_pred) # 혼동행렬(정답, 예측 순)
실제 \ 예측음성 (0)양성 (1)
음성 (0)진음성 (True Negative)위양성 (False Positive)
양성 (1)위음성 (False Negative)진양성 (True Positive)

진/위 양성/음성

  • 혼동행렬에서 양성/음성은 예측을 기준으로 말함
  • 현실에서는 실제로 어떤지 알 수 없는 경우가 많음
  • 진(True) -> 예측이 맞음
  • 위(False) -> 예측이 틀림

정확도 (Accuracy)

  • 전체 중에 예측이 맞은 비율
  • 특별히 음성/양성 구분에 관심이 없는 경우 사용
  • 그러나 대부분은 양성에 더 관심이 있음
accuracy_score(y_test, y_pred)

정밀도 (Precision)

  • 양성 예측 중에 맞은 비율
  • 양성 예측이 중요한 경우 (예: 채용, 투자, 추천, 결혼 등)
precision_score(y_test, y_pred)

재현도 (Recall)

  • 실제 양성 중 찾아낸 비율
  • 양성을 찾아 내는 것이 중요한 경우 (예: 방역)
  • 의학 등에서는 민감도(specificity)라고도 함
  • 또는 TPR(True Positive Rate)
recall_score(y_test, y_pred)

특이도 (Specificity)

  • 실제 음성 중 찾아낸 비율
  • 음성을 찾아 내는 것이 중요한 경우 (예: 방역)
  • 대체로 양성 예측을 보수적으로 하면 특이도가 높아진다
  • FPR(False Positive Rate):
recall_score(y_test, y_pred, pos_label=0)

특이도가 낮을 경우 문제점

  • 질병 검사에서는 음성이 양성보다 훨씬 많음
  • 특이도가 낮으면 정밀도가 떨어짐

예) 실제 양성이 1%인 경우

실제 \ 예측음성양성
실제 음성99000
실제 양성298
  • 특이도 100%, 민감도 98%, 정밀도 100%
실제 \ 예측음성양성
실제 음성9504396
실제 양성1090
  • 특이도 96%, 민감도 90%, 정밀도 18.5%

F1

  • 정밀도(p)와 재현도(r)의 조화 평균
  • 조화평균: 역수의 평균의 역수
  • 비율, 속도 등을 평균낼 때는 산술평균 대신 조화평균을 사용
f1_score(y_test, y_pred)

퀴즈

예측
음성양성
실제 음성521115
실제 양성373629
  • TP: 진양성
  • TN: 진음성
  • FP: 위양성
  • FN: 위음성
Previous
로지스틱 회귀분석