레이블이 confusion_matrix인 게시물을 표시합니다. 모든 게시물 표시
레이블이 confusion_matrix인 게시물을 표시합니다. 모든 게시물 표시

2023년 2월 15일 수요일

confusion_matrix, 오차행렬 이해와 암기

 

confusion_matrix

뭔가 혼란스럽습니다. 기억할 수 있도록 정리해봤습니다.

들어가기에 앞서 아래 2가지는 같은 개념으로 이해하시기 바랍니다. 단지 예측이냐 실제값에 사용하는냐에 따라 표기 방법이 달라지게 됩니다.

TRUE==Positive

FALSE==Negative

처음은 표를 기억해야 합니다. 가로 세로 축이 변형 되는 경우가 있는데 좌측이 예측이 되는 형태를 암기해 둡니다.


위 표에서 ?? 로 표기된 형태에 TP, TN, FP, FN 4가지 값이 들어가게 됩니다.
두개의 글자는 아래와 같은 의미를 갖는다고 꼭 기억하시기 바랍니다.
(예측이 맞았는지 맞았으면T, 틀리면F)(예측한 값 T는P, F는N 으로 표현)

앞에 자리입니다. 예측이 맞았냐 틀렸냐에 따라 T / F 로 표기합니다.


뒤에 자리입니다 예측을 T 로 했느냐 F 로 했느냐에 따라 P / N 으로 표기합니다.


두개를 종합해보겠습니다.


각각의 의미는 아래와 같습니다.
- True Positive(TP) : 예측 맞음, True로 예측했으며 실제 True
- False Positive(FP) : 예측 틀림, True로 예측 했으나 실제 False
- False Negative(FN) : 예측 틀림, False로 예측했으나 실제 True
- True Negative(TN) : 예측 맞음, False로 예측했으며 실제 False

이번에는 정밀도(Precision)와 재현율(Recall)입니다. 이 두개가 헷갈리게 됩니다.
먼저 정밀도 입니다.

Precision = TP / ( TP + FP )


Recall= TP / ( TP + FN )

두개가 비슷해서 시간이 지나면 기억에 남지 않습니다.

아래와 같이 필기체 l (recall) 에 있다고 암기해 주시면 됩니다.


sklearn 의 confusion_matrix 를 사용해 보겠습니다.
이 함수는 실제값과 예측한 값을 넣어서 이것을 카운팅 해서 보여주게 됩니다. 리턴값이 복잡한데 여기에서 정리해 보았습니다. 위표와 순서가 다름에 유의해 주시기 바랍니다.

아래 document 문서 Examples에서 확인이 가능합니다.

sklearn.metrics.confusion_matrix — scikit-learn 1.2.1 documentation


그리고 예제를 보면 3 X 3 Matrix 로 나오는 경우가 있는데 이 부분은 위에서 binary 형태라서 2 X 2 가 되었던 부분이고 정답 종류가 많아지면 아래 형태처럼 좀 더 큰 matrix가 만들어 집니다. 즉 TN 형태로 만들어지는 것이 아니라 실제값을 가지고 구성을 해야합니다. 예제는 아래 정식 문서 참고하시기 바랍니다.

3.3. Metrics and scoring: quantifying the quality of predictions — scikit-learn 1.2.1 documentation