3.2 오차행렬(Confusion matrix)

jwKim·2023년 1월 23일

오차행렬

오차행렬은 실제 레이블과 예측 레이블의 일치 여부를 나타내는 행렬이다.
오차 행렬은 아래와 같다.

column 부분은 모델의 예측 레이블, row 부분은 실제 레이블 값이다.
0은 Nagative를, 1은 Positive를 의미한다. 각 요소의 의미는 아래와 같다.

  • TN : 실제 값 0, 예측 값 0 => 예측 성공
  • FN : 실제 값 1, 예측 값 0 => 예측 실패
  • FP : 실제 값 0, 예측 값 0 => 예측 실패
  • TP : 실제 값 1, 예측 값 1 => 예측 성공

python에서 오차행렬을 확인하기 위한 방법은 아래와 같다.

from sklearn.metrics import confusion_matrix

confusion_matrix(t_test, predicted)



오차행렬 쉽게 그리기

오차행렬(confusion matrix)는 말 그대로 오차행렬을 그릴 때마다 헷갈린다. 아래는 필자의 개인적인 팁이다. 여기서 전제는 우리가 찾고 싶어 하는 결과를 Positive(1)로 두는 것이다. 아래의 예시를 참고하면 좋다.

  • 암 진단 모델에서는 정상을 Nagative, 암 진단을 Positive로 설정한다.
  • 금융 사기 진단 모델에서는 정상 거래를 Nagative, 금융 사기에 의한 거래를 Positive로 설정한다.

    < 오차행렬 쉽게 그리기 >

    1. 제 1종 오류라고 불리는 FP를 먼저 아무 곳이던 쓴다.
    2. 대각선 아래에 FN을 쓴다.
    3. FP와 FN에 맞춰 축을 지정한다.
    4. 나머지 TN과 TP를 자리에 맞춰 쓴다.

💡 <제 1종 오류 - 궁금증>
제 1종 오류라고 불리는 FP는 실제 값은 Positive 인데, 예측을 Nagative로 한 것을 말한다. 암 진단 모델을 예로 들면, 실제로는 정상환자를(Nagative) 암환자로(Positive) 오진하는 경우가 FP, 즉 제 1종 오류 상황이다. 그런데 이 경우 FN이 더 문제가 있지 않을까? 왜냐하면 정상환자를 암환자로 오진하는 경우(FP) 다시 검사하면 되지만, 암환자를 정상환자로 오진하는 경우(FN)는 자칫하면 암환자가 치료를 받지 못하게 할 수도 있기 때문에,,, 이 내용은 수정해야 할 것 같다!

위에서 그린 오차행렬은 다음에 나올 정밀도(Precision)와 재현율(Recall), F1 socre에서 다시 사용될 것이므로 잘 익혀두자



사진 및 자료 출처 :

0개의 댓글