Hello Computer Vision

Precision, Recall 구분 및 공부 본문

mathematics

Precision, Recall 구분 및 공부

지웅쓰 2023. 7. 21. 13:51

이번에 논문을 읽으면서 Precision, Recall 에 대한 표가 나왔는데 precision은 대충 감으로 알고 있었는데 recall은 많이 봤는데 항상 까먹는다. 그래서 다시 공부해보려고 한다.

 

우선 많이 봤을 표다. 근데 사실 봐도 계속 까먹긴한다. 일단 맞춘 것은 앞에 True가 붙는다 --> True Positive, True Negative

 

그리고 틀린 것은 앞에 False가 붙는데 내가 negative 로 예측했으면 False Negative, true로 예측했으면 False Positive로 붙는 것이다. 

 

사실 또 까먹을 거 같다.. 그래서 가장 중요한 Precision, Recall을 알아보려고 한다.

일단 Precision을 살펴보자. TP / TP + FP 이다. 내가 True로 예측한 것중에서 실제로 True 인 것의 확률이다. 이것만 보면 accuracy랑 똑같은 거 같지만 accuracy는 

 다음과 같은 수식을 나타낸다. Positive 만 예측하는 것이 아니라 Negative도 고려해야하는 것이다.

 

다시 돌아와서 그렇다면 Precision이 높은 것은 무조건 좋은 것일까? 그럴 경우도 있지만 무조건은 아니다. 왜냐하면 1개만 골라 우연히 맞춘다음 예측을 진행하지 않는다면(표본이 적다면) Precision은 1이 되는 것이다. 또 다른 예시는 imbalanced class문제에서 c0~c9 클래스가 있고 c0에 속하는 이미지가 1000개 있고 c9에 속하는 10개의 이미지가 있다고 가정해보자. 이러한 데이터로 훈련이 됐다고 가정해보고 똑같은 데이터의 분포로 검증을 해본다면 이미 모델은 1000개의 c0 클래스에 대해서 확증편향이 일어났을 것이고 실제 c9클래스 이미지에 대해서도 c0이라고 예측할 것이며 한개의 이미지에 대해서만 c9라고 예측을 하고 이를 맞았다고 해보자. 실제로 10개중에 1개만 c9라고 올바르게 예측한 것이지만 precision 은 1이 나오는 것이다. 

 

이제 Recall을 살펴보자. Recall의 수식은 TP / TP + TN 이다. TN는 실제 Positive 이지만 내가 Negative 로 예측한 것이다. 즉 전체 Positive  데이터에서 내가 실제로 맞춘 확률이다. 위의 예시를 똑같이 Recall을 살펴보면 10개 중에 한개맞 맞춘 것이니 0.1이 될 것이다. 

 

즉 한개의 지표만으로는 모델의 성능이 좋은지 알 수 없다. 특히 imbalance class data가 산재해 있는 real world 에서는 그렇다.

 


Reference

위키백과