[ML/DL] Precision & Recall Trade-off

오늘은 중요하게 다루고 넘어갈, Precision과 Recall의 Trade-off 관계에 대해 짚고 넘어가고자 한다.

 

우선 포스팅에 앞서, Precision값과 Recall에 대해 간단히 짚고 넘어간다.

 

Confusion Matrix

confusion matrix

 

우리는 Precision과 Recall의 정의는 Confusion Matrix에서부터 시작한다.

 

분류 모델에 대한 성능을 평가할 때는 모델이 내놓은 답(Predicted), 실제 정답(Actual) 간의 관계로 정의하여 2 x 2 Matrix로 정의할 수 있다. Confusion Matrix의 각각의 요소에 대한 설명은 아래와 같다.

  • True Positive(TP) : 실제 True인 정답을 True라고 예측 (정답)
  • False Positive(FP) : 실제 False인 정답을 True라고 예측 (오답)
  • False Negative(FN) : 실제 True인 정답을 False라고 예측 (오답)
  • True Negative(TN) : 실제 False인 정답을 False라고 예측 (정답)

 

 

Precision(정밀도) $ \frac{TP}{TP + FP} $

 

Precision은 추천된 상위 K개의 항목 중, 얼마나 많은 항목이 관련성이 있는지를 측정하는 것이다. 즉, 긍정 예측 중 실제로 긍정인 예측을 측정하는 값이다. 예를 들어, 날씨 모델이 맑다고 예측했는데, 실제 날씨가 맑았는지를 살펴보는 지표다.

 

Recall(재현율) $ \frac{TP}{TP + FN} $

 

Recall은 추천된 상위 K개의 항목 중, 얼마나 많은 관련 항목을 성공적으로 추천했는지를 측정하는 것이다. 즉, 실제 긍정을 얼마나 잘 예측했는가의 비율이다. 예를 들어, 실제 날씨가 맑은 날 중에서 모델이 맑다고 예측한 비율을 나타낸 지표다.

 

Precision과 Recall은 True Positive의 경우를 다르게 바라보는 것에서 차이가 있다. Precision이나 Recall은 모두 실제 True인 정답을 모델이 True라고 예측한 경우에 관심이 있으나 바라보고자 하는 관점이 다른 것에 차이가 있다. Precision은 모델의 입장에서, Recall은 실제 정답의 입장에서 정답을 정답으로 바라보는 것이다.

 

Precision-Recall Trade-off

 

Precision과 Recall 사이에는 Trade-off가 존재한다. 즉, Precision과 Recall을 둘 다 최대값으로 할 수는 없으며, 하나를 올리기 위해선 하나를 희생해야하는 상황이 발생한다.

 

예를 들어, 아래의 경우를 생각해보자.

 

"어떤 요소에 의해, 확실히 맑은 날을 예측할 수 있다면 해당하는 날에만 맑은 날이라고 예측하면 되겠다."

 


이 경우에는 확실하지 않은 날에는 아에 예측을 하지 않고 보류하여 FP의 경우의 수를 줄이고 Precision을 극도로 끌어올리는 일종의 편법이다. 예를 들어 한달 30일 동안 맑은 날이 20일이었는데, 확실한 2일만 맑다고 예측한다면, 당연히 맑다고 한 날 중에 실제 맑은 날(Precision)은 100%가 나오게 된다. 그러나, 이는 절대 이상적인 모델이 아님을 우리는 직관적으로 알 수 있다.

 

때문에, 우리는 실제 맑은 20일 중에서 예측한 맑은 날의 수도 고려해 보아야한다. 이 경우(Recall)에는 Precision만큼 높은 결과가 나오지 않는다. Precision과 함께 Recall을 함께 고려하면 실제 맑은 날들(즉, 분류의 대상이 되는 정의역, 실제 data)의 입장에서 우리의 모델이 맑다고 예측한 비율을 함께 고려하게 되어 제대로 평가할 수 있다. Precision과 Recall은 상호보완적으로 사용할 수 있으며, 두 지표가 모두 높을 수록 좋은 모델이다.

 

Type 1 & Type 2 Error

 

우리는 가설 검정에서 Type 1과 Type 2의 Error를 배웠다.

 

가설 검정에서도 Type 1과 Type 2의 Error는 서로 Trade-off 관계에 있음을 배웠다. 간단하게 Type 1, 2 Error에 대해 짚고 넘어가자.

$$Type 1 error = P(reject \; H_0 | H_0 \; is\;  true)$$

$$Type 2 error = P(accept\;  H_0 | H_0 \; is \; not true)$$

 

이 정의에 따라 Type 1, 2 Error를 그림으로 살펴보면 아래와 같다.

 

가설 검정 시에는 어떤 상황에서 어떤 가설을 받아들일지의 기준이 필요하다. 때문에, 그 기준으로써 critical region을 잡게 되는데 Type 1 error는 H0가 true일 때, reject H0일 확률, 즉, 미리 설정해둔 critical region의 표본을 뽑을 확률이다. 위의 그림에서 Any mean이 기준점이고 H0 관점에서 빨간색 영역이 기각역이라고 볼 수 있다. 그리고 이 기각역에 따라 Type 2 error도 정해진다. Any mean을 좌우로 조정하게되면 Type 1, 2 error의 크기가 변한다. 하지만 둘다 커지거나 둘다 작아지는 경우가 없는 trade-off관계다.

 

다시 본론으로 돌아와서, Precision과 Recall은 TP를 분자로써 같이하고 분모에는 TP에 Type 1, 2 error에 해당하는 FN, FP를 더하여 계산한다. 이때, FN, FP는 각각 Type 1, 2 error에 있으므로 Precision과 Recall 또한 trade-off 관계에 있다고 할 수 있다.

 

  • False Positive (FP) = Type 1 Error: 실제로는 거짓인데, 참이라고 잘못 판단함.
    • ex. 병이 없는 사람을 병이 있다고 진단하는 경우.
  • False Negative (FN) = Type 2 Error: 실제로는 참인데, 거짓이라고 잘못 판단함.
    • ex. 병이 있는 사람을 병이 없다고 진단하는 경우.

 

이를 조금 더 직관적인 벤다이어 그램으로 이해해보자.

 

A는 실제로 날씨가 맑은 날이고 B는 모델에서 날씨가 맑은 날이라고 예측한 것이다. 이때, b의 영역은 TP로 실제 맑은 날씨를 모델이 맑다고 정확히 예측한 날씨다. 위의 영역에서 Precision과 Recall은 아래와 같다.

$$precision =  \frac{b}{b+c}$$

$$recall =  \frac{b}{a+b}$$

 

모델의 입장에서 모두 맑은 날이라고 예측한 경우, d(TN)의 영역이 줄어들고 a(FN)의 영역도 줄어들게 된다. 그렇게 되면 Recall은 분모의 일부인 a(FN) 영역이 줄어들기 때문에 100%가 된다.

 

즉, 여기서 A⊂B인 관계를 형성하게 된다. 그러나, 주의할 점은 단순히 a의 영역만 줄어드는 것이 아니라 d의 영역과 a의 영역이 모두 c로 흡수된다는 것이다. Precision의 경우에는 기존보다 c(FP)의 영역이 커져 Precision은 줄어든다.

 

 

왼쪽에서 $Recall = 20 / 50$, $precision = 20 / 60$이다. 반면 분류모델이 모두 True라고 예측한 오른쪽의 Case에서 Recall의 $FN = 0$이기에 100%지만, 그에 따라 FP가 늘기 때문에 $precision = 20/100$이다. 때문에, Precision과 Recall은 모두 높은 것이 좋지만, Trade-off 관계에 있기에 함께 늘리기가 어렵다.

 

그렇다면, 우리는 Precision과 Recall이 모두 높은 상황을 Pick하는 것이 유용한데, 이를 위한 지표가 바로 F1-Score다. F1-Score값이 높을 수록, Precision과 Recall 값이 잘 분배되었다고 생각하면 된다.

 

Precision-Recall Threshold

 

보통 이진 분류에는 Positive(1) 라벨로 분류하는 확률값은 디폴트로 0.5다. 이 디폴트값을 올려줌으로써 Precision과 Recall 값을 조절할 수가 있다. 이 디폴트 값을 Threshold라고 한다.

 

만약, Threshold를 0.4로 낮추게 된다면 어떤 일이 일어날까? Threshold를 낮춘다는 것은 모델이 Positive하게 예측하는 양이 많아짐을 의미한다. Recall의 경우, Threshold를 낮추면 커지게 된다. 반대로 Precision의 경우, Threshold를 낮추게 되면 낮아지게 된다.

 

그 의미에 대해서는 각자 한번 생각해보길 바란다.

 


Reference

https://sumniya.tistory.com/26

 

분류성능평가지표 - Precision(정밀도), Recall(재현율) and Accuracy(정확도)

기계학습에서 모델이나 패턴의 분류 성능 평가에 사용되는 지표들을 다루겠습니다. 어느 모델이든 간에 발전을 위한 feedback은 현재 모델의 performance를 올바르게 평가하는 것에서부터 시작합니

sumniya.tistory.com

https://techblog-history-younghunjo1.tistory.com/101

 

[ML] Precision 과 Recall의 Trade-off, 그리고 ROC Curve

이번 포스팅에서는 분류 문제 성능을 평가하는 대표적인 metric으로서 Precision과 Recall에 대해 알아보고 이 둘 간의 관계, 그리고 ROC Curve와 이를 Score로 환산한 AUC에 대해서 알아보려고 한다. 그리

techblog-history-younghunjo1.tistory.com