logo

혼동행렬

앞서 학습한 로지스틱 회귀 모델의 혼동행렬과 정확도·정밀도·재현도·F1 해석

혼동행렬

🤖 AI 프롬프트
앞서 학습한 model을 테스트 데이터에 적용해서 혼동행렬을 출력하고, 정확도, 정밀도, 재현도를 계산해라
  • 혼동 행렬(confusion matrix): 실제값과 예측값의 조합을 표로 정리한 분류 성능 요약
  • sklearn.metrics.confusion_matrix로 계산
  • 이진 분류에서는 실제 음성/양성과 예측 음성/양성의 조합으로 네 칸이 만들어짐
from sklearn.metrics import confusion_matrix

y_pred = model.predict(X_test)
confusion_matrix(y_test, y_pred)
실행 결과
array([[1200,  157],
       [ 357,  286]])

혼동 행렬의 진음성, 위양성, 위음성, 진양성 구분

  • 행: 실제 클래스
  • 열: 예측 클래스

진/위 양성/음성

  • 혼동행렬에서 양성/음성은 예측을 기준으로 말함
  • 진(True): 예측이 맞음
  • 위(False): 예측이 틀림
  • 주요 용어
    • 진음성(TN): 실제 음성, 예측 음성
    • 위양성(FP): 실제 음성, 예측 양성
    • 위음성(FN): 실제 양성, 예측 음성
    • 진양성(TP): 실제 양성, 예측 양성

정확도

  • 정확도(accuracy): 전체 중 예측이 맞은 비율
  • 음성/양성 구분 자체보다 전체 정답률에 관심이 있을 때 사용
  • 실습: 2,000개 중 정상과 불량을 맞힌 1,486개의 비율, 74.3%

정확도에서 맞은 예측에 해당하는 혼동행렬 위치

Accuracy=전체TP+TN​
from sklearn.metrics import accuracy_score

accuracy_score(y_test, y_pred)
실행 결과
0.743

정밀도

  • 정밀도(precision): 양성이라고 예측한 것 중 실제로 맞은 비율
  • 실습: 불량으로 예측한 443개 중 실제 불량 부품 286개의 비율, 약 64.6%
  • 양성 예측 자체가 중요한 경우 사용
    • 예: 채용, 투자, 결혼, 추천 등

정밀도에서 양성 예측에 해당하는 혼동행렬 위치

Precision=TP+FPTP​
from sklearn.metrics import precision_score

precision_score(y_test, y_pred)
실행 결과
0.6455981941309256

재현도

  • 재현도(recall): 실제 양성 중 찾아낸 비율
  • 실습: 실제 불량 부품 643개 중 찾아낸 286개의 비율, 약 44.5%
  • 양성을 빠뜨리지 않고 찾아내는 것이 중요한 경우 사용
    • 예: 방역
  • 의학 등에서는 민감도(sensitivity)라고도 하며, TPR(True Positive Rate)와 같음

재현도에서 실제 양성에 해당하는 혼동행렬 위치

Recall=TP+FNTP​
from sklearn.metrics import recall_score

recall_score(y_test, y_pred)
실행 결과
0.4447900466562986

F1

  • F1: 정밀도(p)와 재현도(r)의 조화 평균
  • 조화평균: 역수의 평균의 역수
  • 산술평균에 비해, 둘 중에 하나만 낮아져도 크게 낮아짐
    • 예: 0.9와 0.1인 경우, 산술평균 0.5, 조화평균 0.18
  • 정밀도와 재현도가 모두 0일 때 scikit-learn의 F1은 0
F1=21​(p1​+r1​)1​ F1=p+r2pr​
from sklearn.metrics import f1_score

f1_score(y_test, y_pred)
실행 결과
0.5267034990791897

퀴즈

문제 1 / 6맞음: 0힌트: 0틀림: 0채점중: 0남음: 6

confusion_matrix(y_test, y_pred)의 행과 열은 무엇을 뜻하나요?

  • ○행은 실제 클래스, 열은 예측 클래스
  • ○행은 예측 클래스, 열은 실제 클래스

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
로지스틱 회귀분석