머신러닝&딥러닝

Confusion matrix란

seungbeomdo 2024. 3. 16. 17:36

 

 

 

1. Confustion Matrix

 

이진 예측(분류 예측) 모델을 평가하는 대표적인 지표는 Confusion matrix이다. 주어진 데이터포인트를 양성(1) 또는 음성(0)으로 분류하는 문제에서, 데이터포인트의 실제 레이블과 예측된 레이블을 비교하는 행렬이다.

 

가로축은 실제 레이블을 나타내며, 세로축은 예측된 레이블을 나타낸다. 즉

- (1,1) 성분은 실제로 양성이고, 모델도 양성이라고 예측한 데이터포인트의 개수 TP (True Positive)

- (1,2) 성분은 실제로는 음성이지만, 모델은 양성이라고 예측한 데이터포인트의 개수 FP (False Positive)

- (2,1) 성분은 실제로 양성이지만, 모델은 음성이라고 예측한 데이터포인트의 개수 FN (False Negative)

- (2,2) 성분은 실제로 음성이고, 모델도 음성이라고 예측한 데이터포인트의 개수 TN (True Negative)

 

완벽한 분류 모델이라면, confusion matrix의 (1,1) 성분과 (2,2) 성분만 채워지고 나머지 성분은 0이어야 한다.

 

 

2. 정확도 지표와 불균형한 레이블 분포의 문제

 

Confusion matrix를 사용해서 가장 먼저 떠올릴 수 있는 성능 지표는 정확도(Accuracy)이다. 전체 레이블 중 정확하게 예측한 비율을 말한다.

$$Acc = \frac{TP+TN}{TP+FP+TN+FN}$$

 

예를 들어 위의 matrix에서

Acc = (540+200) / (540+150+200+110) = 740 / 1000 = 0.74

 

 

그런데 많은 레퍼런스들에서는 정확도 외에 정밀도(Precision)라든가, 재현율(Recall)이라든가 하는 지표들을 함께 사용한다. 그건 레이블의 분포가 불균형할 때의 이슈를 고려하기 때문이다.

 

대출을 연체하는 사람을 찾아내는(레이블 = 1) 문제를 생각해보자. 우리나라 사람들은 대출을 대체로 잘 갚기 때문에 레이블이 1인 경우는 매우 적다. 즉 대부분의 레이블이 0의 값을 가진다. 레이블의 분포가 불균형하다고 말한다(imbalanced).

 

예를 들어 아래와 같은 매트릭스이다. 총 11200명의 사람들이 있는데, 11000명은 대출을 제때 잘 갚고, 200명만 갚지 않는다. 레이블이 1인 경우(대출을 못 갚는 경우)는 전체의 2%도 안 된다.

 

 

위의 매트릭스에서 대출을 못 갚는 사람들이 200명인데, 이 모델은 그 중 100명밖에 예측을 못했다.

이때 정확도는 (100 + 10000) / (100 + 1000 + 10000 + 100) = 0.902

 

생각보다 좋은 모델인 것처럼 보인다. 이게 문제다.

 

3. 대안적 지표 

불균형한 레이블 분포를 가지고 있을 때 사용하는 2가지 지표가 있다. 하나는 정밀도(Precision)이다. 모델이 양성이라고 예측한 것 중에 실제로 양성인 게 얼마나 되냐를 측정한다.

$$Prec = \frac{TP}{TP + FP}$$

 

두번째는 재현율(Recall)이다. 실제로 양성인 것 중에 모델이 양성이라고 예측한 게 얼마나 되냐를 측정한다.

$$Rec = \frac{TP}{TP + FN}$$

 

위의 매트릭스에서 정밀도는 100 / (100 + 1000) = 0.091

재현율은 100 / (100 + 100) = 0.5

 

정밀도와 재현율로 측정했더니 모델이 썩 좋지 못한 모델이라는 걸 반영하고 있다.

 

정밀도와 재현율은 음성으로 쏠려있는 불균형한 레이블 분포일 때 사용하는 지표이다. 만약 대부분의 레이블이 양성인 레이블 분포라면 정밀도와 재현율도 썩 좋은 지표가 되지 못한다. 그럴 때는 음성과 양성 레이블을 바꿔서 정밀도와 재현율을 계산하면 된다. 즉 대출을 못 갚는 사람을 찾는 게 아니라, 대출을 갚는 사람을 찾는 문제로 말만 바꾸면 된다.

 

어떤 이유에서인지 레이블을 유지하고 싶다면 특이도(Specificity)라는 지표가 있다. 특이도는 실제로 음성인 것들 중에 모델이 음성이라고 예측한 게 얼마다 되냐를 측정한다. 즉 재현율의 음성 버전이다.

$$Spec = \frac{TN}{TN + FP}$$

 

 

'머신러닝&딥러닝' 카테고리의 다른 글

F1-score와 AUC는 왜 필요한데?  (0) 2024.03.16
Deep Learning #7 Transformer  (0) 2023.03.05
Deep Learning #6 Attention  (0) 2023.03.02
Deep Learning #5 NLP의 개요  (0) 2023.02.28
Deep Learning #4 RNN(순환신경망)  (0) 2023.02.23