본문 바로가기
소년의 IT 쉽게 이해하기/인공지능 쉽게 이해하기

Precision, Recall, Accuracy 쉽게 이야기하기

by Circlezoo 2021. 12. 31.

출처: geralt on Pixabay

 

 분류성능평가지표 중 Precision(정밀도), Recall(재현율), Accuracy(정확도)은 머신러닝(Machine Learning) 성능 평가 중 중요하고 기본이 되는 지표이기 때문에 한 번 알아보고자 합니다.

 

Q. Precision, Recall, Accuracy가 뭔가요?

 

 Percision, Recall, Accuracy는 논문에서도 많이 보이는 지표이며 또 그만큼 중요하게 생각하는 지표입니다.

하지만 이것을 이야기하기전에 뭔저 알아야할 것이 있습니다. 그것은 바로 TP(True Positive), FP(False Positive), TN(True Negative), FN(False Negative)입니다. 이것에 대해 각각 이야기하면 아래와 같습니다.

 

 - TP(True Positive): 실제 True인 정답을 True라고 예측

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

 

Q. TP, FP, TN, FN을 조금 쉽게 설명해줄 순 없나요?

 

 TP, FP, TN, FN은 중요한 개념입니다만 외우려고 하니 잘 외어지지 않고 헷갈리기만 합니다.

이렇게 생각해보는 것이 좋을 것 같습니다.

Positive를 True라고 생각하고 뒤에서부터 읽어보는 것입니다.

 

 - TP: 컴퓨터가 Positive(True)라고 했는 데 결과가 진짜(True)였다. (맞춘거죠?)

 - FP: 컴퓨터가 Positive(True)라고 했는 데 결과가 가짜(False)였다. (틀린겁니다.)

 - TN: 컴퓨터가 Negative(False)라고 했는 데 결과가 진짜(True)였다. (맞춘겁니다.)

 - FN: 컴퓨터가 Negative(False)라고 했는 데 결과가 가짜(False)였다. (틀린겁니다.)

 

Q. Precision이라고 하는 게 뭘까요?

 

 정밀도. 말부터 벌써 어렵습니다. 정밀하게 무엇을 한다는 걸까요?

정밀도라는 것은 모델이 True라고 한 것 중에 실제 True인 것의 비율입니다.

식으로 표현하면 TP/(TP+FP)가 되는 것이죠.

즉, 컴퓨터가 맞다고 한 것 중에서 실제로 얼마나 맞았냐?라는 것입니다.

이것은 PPV(Positive Predictive Value) 정답률이라고 불리기도 합니다.

 

Q. Recall은 뭘까요?

 

 재현율. 벌써 익숙하지 않은 단어입니다.

재현율이라는 것은 실제 True인 것 중에서 모델이 얼마냐 맞냐?라고 한 것입니다.

식으로 표현하면 TP/(TP+FN)가 되는 것이죠.

즉, 실제로 맞은 것 중에서 컴퓨터가 얼마나 맞췄냐?라는 것입니다.

익숙한 통계에서는 민감도(Sensitivity)라는 용어로 사용됩니다.

 

Q. Precision과 Recall은 뭐가 다른가요? 무슨 관계인가요?

 

 보다보면 둘 다 얼마나 맞았냐?를 말하는 것이라서 동일한 게 아닌가? 라는 생각이 들 수도 있습니다.

이 둘의 차이는 누구의 입장에서 생각하느냐?라는 차이가 있습니다. Precision은 컴퓨터의 입장에서 이야기를 하는 것이고, Recall은 현재 사실의 입장에서 이야기하는 것입니다.

 

 공식을 보면 아시겠지만 Precision과 Recall은 둘 다 1이 가장 좋은 값입니다. 그래서 최대한 1로 만들어주려고 합니다.

하지만 이 과정 속에서 신기한 현상이 있습니다. 생각해봅시다. TP, FP, TN, FN은 각각의 값이 있을 겁니다. 우리는 여기서 Precision의 값을 올려주기 위해서 FP를 0으로 만들기로 했습니다. 즉 결과가 False인 것을 모두 없애버리기로 한 것이죠. 여기에서 FP값이 0이되어 없어지다보니 자연스럽게 FN의 값이 올라가게 됩니다. 이들의 총합은 같아야하기 때문이죠. 그렇게 FN값이 올라가게되면 Recall 값은 줄어듭니다.

즉, Precision 값을 올리려고 해봤더니 Recall 값이 줄어드는 겁니다.

이 관계를 Trade-off 관계에 있다고 합니다.

 

Q. Accuracy는 뭔가요?

 

 Accuracy는 정확도를 이야기합니다. 정확도 이름만 들어도 직관적입니다.

앞서 Precision과 Recall의 경우 Ture인 지표에서만 생각했다면 Accuracy의 경우는 False인 경우도 함께 생각할 수 있습니다. 옳은 경우를 전부 생각해보는 것이죠.

 

Q. Accuracy가 가장 직관적이면 Accuracy만 있으면 되지 Precision과 Recall은 어디다 쓰는 거죠?

 

 맞습니다. Accuracy만 있으면 정확도를 찾는 데는 문제가 없습니다. 하지만 저희는 정확도를 알고 싶은 것이 아닙니다. 정확도를 더 높이고 싶은 것이죠. 정확도를 더 높이기 위해서 세부적으로 값을 확인하고 뭐가 문제인지 분석해야겠죠. 그러기위해서는 더 많은 지표가 필요합니다. 그렇기에 Precision과 Recall 역시 함께보는 것이며, 또 중요합니다.

 

Q. F1 Score라는 것도 있던데 이건 뭘까요?

 

 Precision과 Recall은 앞서 말씀드린 것처럼 Trade-off 관계에 있습니다. 데이터는 균형적이지 않은 데이터일 확률이 높습니다. 마치 사다리꼴의 밑면과 윗면처럼 다른 크기를 가지는 것과 같은 그림이라고나 할까요? 이런 사다리꼴을 반으로 나눠서 같은 면적을 가지려고 하면 중간을 잘라서는 안됩니다. 그럼 면적이 달라지니까요. 생각해보면 이 방식은 물리에서 수학에서 많이 썼었습니다. 자전거를 타다가 뛰어서 목적지에 가는 철수의 평균속력을 구하는 문제가 떠오르네요.

 

Precision과 Recall의 조화평균을 F1 Score라고합니다.

 

참고: https://sumniya.tistory.com/26

 

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

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

sumniya.tistory.com

 

반응형

댓글