3.2 오차행렬(Confusion matrix)

jwKim·2023년 1월 23일
0

오차행렬

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

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개의 댓글