[용어 정리] 입개발자를 위한 Accuracy, Recall, Precision

최근에 공부하게 된 내용을 아주 가볍게 정리하고자 합니다. 머신러닝은 못하고 러닝머신도 못하고 있지만(저질 체력이라…) 맨날 공부하자 말만 하고 모르고 있다가… 아는 게 없어서 맨날 구라만 치는 중입니다. 그러던 중, 위의 내용들을 가볍게 설명할 일이 생겼는데… 역시 저의 구라로 시작한 일은 비극적으로 구라가 들통나버리는… 흑흑흑

그래서 좀 더 큰데서 구라를 다시 한번 치기 위해서 용어를 정리합니다. 흑흑흑 그래요 저 이런것도 모릅니다.

table

(해당 그림은 wikipedia 에서 가져왔습니다.)

다들 아시겠지만, 저는 잘 모르니… 먼저 간단하게 정리합니다. 일단 다음 4개의 용어를 먼저 기억해야 합니다.

True Positivie(TP) True 인데, True라고 맞춘 경우(잘한 경우)
False Positive(FP) False 인데, True라고 한 경우(틀렸어요.)
True Negative(TN) False 인데, False라고 맞춘 경우(잘한 경우)
False Negative(FN) True 인데 False 라고 한 경우(틀렸어요.)

TP, TN은 잘 한 경우, FP, FN은 잘못한 경우입니다. 그런데 FP, FN 중에 뭐가 낫냐고 하면, 그건 Case By Case 입니다. 예를 들어 암인데, 암이 아니라고 진단하거나, 암이 아닌데 암이 라고 진단하는 케이스는 어떤 경우가 더 나쁠까요?

그럼 이제 Accuracy, Recall, Precision 에 대해서 알아보도록 하겠습니다. 먼저 Accuracy 는 굉장히 간단합니다. 명확하게 정확도입니다. 정확도라고 생각하면, 즉 전체 중에서 정답을 얼마나 맞춰는가죠.  위의 표를 보시면 total population 이라고 되어 있는데, 그냥 위의 TP+FP+TN+FN, 즉 다 더한겁니다. 즉 전체 합 분의 잘 찾은 경우 즉 TP+TN이 되는 것이죠. 그래서 Accurancy 는 TP+TN/TP+TN+FP+FN 이 됩니다. 간단하죠? 간단하게 말하면, 전체 케이스 중에 정확하게 맞춘 비율입니다.

먼저 precision 은 검출한 것의 정확도라고 할 수 있습니다. 그냥 정확도라고 하면 위의 Accuracy 와 혼동이 오게 되는데, 위의 공식을 보면 TP/Prediction Positive 라고 되어있습니다. Prediction Positive 와 condition positive 가 표에 나오는데 Prediction Positive는 분류를 True 라고 말하는 케이스, Condition Positive 는 실제로 True 인 케이스입니다. 즉 Prediction Positive 는 위의 표에서 TP + FP 가 되구요, Condition Positive 는 TP+FN 이 됩니다. 위의 그림대로입니다. 다시 precision으로 돌아와서 간단하게 TP/TP+FP 입니다. 즉 True라고 분류했으면, 진짜 True 일 확률입니다.

그럼 이제 Recall 은 무엇인가? 검출율이라고 설명하면 쉬운데, 위의 공식을 보면 TP/condition positive 입니다. 즉 TP/TP+FN, 즉 진짜 True 중에 내가 얼마나 TRUE를 제대로 맞췄는가 라고 말할 것인가에 대한 값입니다.

이제 아래의 그림대로 한번 계산을 해보도록 하면…

table2

Accuracy TP+TN/TP+TN+FP+FN 30420/33376 = 0.911
Precision TP/TP+FP 26455/27812 = 0.951
Recall TP/TP+FN 26455/28054 = 0.943

이제 어디가서 좀 아는척 좀 하면 되겠습니다.

Advertisements