본문 바로가기
딥러닝 with Python

[딥러닝 with 파이썬] Precision-Recall Curve와 Average Precision

by CodeCrafter 2024. 2. 19.
반응형

 

 이번에 알아볼 내용은, Object Detection과 Segmentaition에서 평가지표로 활용되는 Average Precision에 대해서 알아보겠습니다.

 

Average Precision은 Precision-Recall Curve의 면적 부분을 의미하는데요. 그렇다면, Precision-Recall Curve에 대해 정리해보고 Average Preicision의 의미는 무엇인지, 그리고 Average Preicision들을 평균한 mAP는 무엇인지 알아보겠습니다.

 

1. Precision-Recall Curve와 Average Precision

1) Precision-Recall Curve

 

- Precision-Recall Curve는 분류모델의 성능을 평가하는데 사용되는 평가지표 중 하나입니다. Trade-off 관계가 있는 Precision과 Recall을 활용해 가로축은 Recall, 세로축은 Precision을 그리는데요.

 

* Precision (정밀도) : TP / (TP + FP)   (모델이 예측한 Positive 중에서 실제 Positive의 비율) 

* Recall (재현율) : TP / (TP + FN)  (실제 Positive 중에서 모델이 예측한 Positive의 비율)

 

- 이때, 모델이 Positive 또는 Negative를 판단하는 임계값(Threshold)에 의해서 Precision과 Recall의 비율이 달라집니다.

 * 실제 Positive인 어떤 관측치가 어떤 모델을 통해서 도출된 Positive일 확률이 0.6이라고 했을 때,

   임계값을 0.6보다 높게 잡으면 해당 관측치는, False인 Negative가 되는 것이지만

   임계값이 0.6보다 낮은 경우에는 True인 Positive가 됩니다. 

 * 위와 같이 임계값에 의해서 FN, TP 등이 달라지기에 이 역시 Precision 값과 Recall의 값에 영향을 미치게 됩니다.

 * 이를 그림으로 표현한 것이 아래에서 보이는 Precision과 Recall Curve 입니다.

 

- 이러한 Precisioin-Recall Curve는 임계값이 낮아질수록 더 많은 항목을 양성으로 분류하여 재현율이 증가하지만, 동시에 거짓 양성의 수도 증가하여 정밀도가 감소하는 경향이 있습니다. 반대로, 임계값을 높여서 모델이 양성으로 분류하는 기준을 엄격하게 만들면 정밀도는 증가하지만, 일부 실제 양성 항목을 놓칠 수 있으므로 재현율이 감소하게 됩니다.

 

- 이러한 PR Curve는 특히 양성 클래스의 예시가 전체 데이터셋에서 소수를 차지하는 불균형 데이터셋에 대한 모델의 성능을 평가할 때 유용합니다. 

 

2) Average Precision

- 이는 위에서 알아본 PR Curve의 아래 면적 부분의 넓이를 의미합니다.

- 해당 값은 0부터 1까지의 값을 가지며, 1에 가까울수록 모델의 성능이 뛰어남을 의미하는데요.

- 주로 하나의 클래스에 대한 성능을 나타내며, 모델이 해당 클래스의 객체를 얼마나 분류하는지를 의미합니다.

 * Object Detection이나 Image Segmentation과 같은 task에서, 어떤 특정 클래스에 대해 얼마나 모델이 잘 검출하는지를 나타냄을 의미합니다.

 

2. mAP

- mAP는 mean Average Precision으로 AP를 평균낸 것을 의미합니다. 

- 여러가지의 클래스가 있는 분류 문제에서 각 클래스를 모델이 얼마나 잘 검출하는지를 평가하는 지표가 되는 것인데요.

- 예를 들어, 10개의 클래스(A,B,C,.....)를 분류하는 문제가 있다고 한다면

 * A클래스의 입장에서보면 나머지 클래스는 다 Negative인 클래스인 것입니다. 그래서, 각 클래스별 데이터의 숫자가 비슷하다고 한다면 A (또는 각 클래스)는 다른 클래스의 숫자들에 비해서 소수가 되는 것입니다.

 * 그래서 각 클래스 별로 AP를 구하는 것입니다. 

- 이렇게 구해진 AP들을 평균내는 것이 mAP라고 보시면 되겠습니다.

 

 

반응형

댓글