안녕하세요.
오늘은 Precision과 Recall에 관하여 이야기해보려고 합니다.
생각날 때마다 찾아보고 또 까먹고를 반복했기 때문에 제대로 한 번 정리해보려고 합니다.
Precision과 Recall은 한글로 정밀도와 재현율이라고 번역됩니다.
아래 그림은 Precision과 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 간 밸런스가 잘 맞는 데이터일 때 사용합니다.)
그렇기 때문에 상황에 맞는 지표들을 체크해야 합니다.
잘못된 부분의 지적은 항상 환영합니다.
그럼 이만.
'AI 및 데이터 과학' 카테고리의 다른 글
ChatGPT 모델의 동작원리 (0) | 2023.05.30 |
---|---|
프로그래밍과 머신러닝과 차이에 관하여 (0) | 2020.07.08 |
데이터 과학(분석) 언어 R vs Python (2) | 2020.07.01 |
댓글