본문 바로가기
AI 및 데이터 과학

Precision과 Recall에 관하여

by Beeer 2020. 7. 28.

안녕하세요.

오늘은 Precision과 Recall에 관하여 이야기해보려고 합니다.

생각날 때마다 찾아보고 또 까먹고를 반복했기 때문에 제대로 한 번 정리해보려고 합니다.

Precision과 Recall은 한글로 정밀도와 재현율이라고 번역됩니다.

아래 그림은 Precision과 Recall을 설명하는 가장 유명한 그림입니다.
(실제로 이해하기도 가장 편한 그림인 것 같습니다.)

출처 - https://www.wikiwand.com/en/Precision_and_recall


조금 더 자세한 설명을 위해 2 by 2 매트릭스가 있을 때

Predict | Actual True False
True True positive False positive
False False negative True negative

위와 같이 나타낼 수 있습니다.

또한, Precision과 Recall을 식으로 정리해보면

Precision = TP / (TP + FP )
Recall = TP / (TP + FN)

와 같이 됩니다.


그렇다면 각각의 지표들을 무엇을 보고자 하는 것일까요?

먼저, Precision과 Recall의 공식에서 차이점을 살펴보겠습니다.

둘 다 분자는 True positive로 동일한데 반해 분모가 TN이 들어가냐 FP가 들어가냐에

따라서 Precision이냐 Recall이냐로 나누어지고 있습니다.

Precision은 True로 예측한 것들을 보고 있습니다.

즉, 예측 중에서 실제로는 False이지만 True로 라벨링 한 것에 민감하게 반응합니다.

그렇기 때문에 조금 더 오류가 없는 것을 중요하게 생각하고 있습니다.

반면에 Recall은 실제 True인 값에 초점을 맞추어서 보고 있습니다.

마찬가지로, 실제로는 True인데 False로 라벨링 한 것에 민감하게 반응하고 있습니다.

두 개의 차이점을 스팸 메일을 통해서 예를 들어 보겠습니다.

스팸 메일의 경우 스팸 메일을 찾아내는 것보다

중요한 메일을 스팸처리 하지 않는 것을 더 중요하게 생각합니다.

그렇기 때문에 Precision과 Recall 중 중요한 지표가 되는 것은

Recall이 되겠지요!!

이해가 안되신다면 질문은 항상 환영입니다.


많은 사람들이 Precision과 Recall을 한 번에 포괄적으로 보는 지표를 원하는 데

그래서 등장한 것이 바로 F-1 score입니다.

F1 = 2 * (Precision * Recall ) / (Precision + Recall)입니다.
(F1 스코어도 다양한 형태로 변형되고 있더군요.)


그렇다면 또 다른 궁금증이 생길 텐데 Accuray (정확도)를 놔두고 왜 다른 지표들을 사용하는 것일까요?

정답은 간단합니다. Accuray가 내포하는 정보를 넘어서 알고 싶을 때가 있습니다.

예를 들어,

Predict | Actual True False
True 200 50
False 50 10000

위와 같이 표현된 confusion matrix가 있을 때
Accuracy -> (200 + 10000) / (200 + 50 + 50 + 10000) ≒ 99%

반면 Precision의 경우 -> 200 / (200 + 50) = 80%
Recall의 경우 -> 200 / (200 + 10000) ≒ 1.9%

이렇듯 Accuracy의 경우 아주 높은 수치를 보여주지만 Precision과 Recall에서 다르게 나타날 수 있습니다.
(대게 Accuracy는 True False 간 밸런스가 잘 맞는 데이터일 때 사용합니다.)

그렇기 때문에 상황에 맞는 지표들을 체크해야 합니다.

잘못된 부분의 지적은 항상 환영합니다.

그럼 이만.

댓글