모델의 지표로 사용되는 것들 중, Precision과 Recall이 있습니다.
한글로 적으면 뭔가 웃겨서, 식으로 설명하려 합니다.
모델은 사람이 낸 문제에 대해 나름의 학습을 토대로 답을 내놓습니다.
이때 정답은 정해져있고, 모델은 정확하게 예측하여 모든 정답을 맞춰야합니다.
말장난 같지만, 잘 예측하는 것과 정답을 잘 맞추는 것은 모두 만족시키기 어렵습니다.
Confusion Matrix
앞으로 설명드릴 2x2 행렬은 이름부터 confusion 하다고 자신있게 말하는 만큼, 자고 일어나면 다시 헷갈리게 됩니다.
위 행렬이 어지러운 이유는 TP빼고 모두 의미를 한번씩 꼬아놨기 때문입니다.
각 위치에 있는 내용을 해석하기 위해서는 맨 뒤부터 생각해야합니다.
예를들어 FN같은 경우, N먼저 생각해서 '아 모델이 틀렸다고 예측했지만', 그 다음 F를 생각해서 '그게 틀렸다는 거구나!'
즉, 모델이 틀렸다고 한게 틀렸으니까 정답이었던 것을 틀렸다고 예측한 경우입니다.
따라서 FP도 마찬가지로 모델이 정답이라고 예측했지만(P), 틀렸으니까(F) 틀린 경우를 정답이라고 예측한 것이 되고
TN의 경우 모델이 틀렸다고 예측했고(N), 그게 맞았으니까(T) 틀린 경우를 틀렸다고 잘 예측한게 됩니다.
어지럽다면, 물 한잔 하고 오시는게 어떨까요?
Precision 그리고 Recall
Precision은 모델이 정답이라고 한 것들중에서 진짜 정답인 경우를 말합니다.
수식으로 표현하면 $\frac{TP}{TP + FP}$ 가 됩니다.
Recall은 진짜 정답중에서 모델이 정답이라고 예측해서 맞춘 경우를 말합니다.
수식으로 표현하면 $\frac{TP}{TP + FN}$ 이 됩니다.
즉 서두에서 말한 잘 예측하는 것은 precision의 값이 높은 것을 말하고,
정답을 잘 맞추는 것은 recall 값이 높은 것을 말합니다.
그렇다면 왜 이 둘을 모두 만족시키기 어렵다는 걸까요?
Precision과 Recall은 서로 Trade-Off 관계
Precision과 Recall은 서로 trade-off 관계에 있습니다.
마치 시소를 타는 것처럼 어느 한쪽이 높아진다는 것은 다른 한쪽은 낮아진다는 것과 같습니다.
앞선 설명을 보시면서 익숙한 내용이 떠오르신 분들이 있을지도 모릅니다.
바로 1종오류와 2종오류입니다.
1종오류는 Null hyphthesis($H_0$)가 참인데도 불구하고 reject하는 경우를 말합니다.
마치 모델이 틀렸다고 예측했지만, 사실 정답이었던 FN과 같습니다.
2종 오류는 Null hypothesis($H_0$)가 거짓인데도 불구하고 accept하는 경우를 말합니다.
마치 모델이 맞다고 예측했지만, 사실 틀린 FP와 같습니다.
1종 오류와 2종 오류는 critical region(혹은 rejection region)을 어떻게 잡느냐에 따라 오류를 범할 확률이 조정되는데
1종 오류나 2종 오류 둘중 하나가 발생할 확률을 줄이면, 다른 오류가 발생할 확률이 올라가는 trade-off 관계입니다.
예를 들어 위와 같이 파란 원이 정답이고, 모델의 예측은 노란 원이라고 해보겠습니다.
이 상황에서 precision은 모델이 예측한 것들중, 정답인 것들이므로
모델이 예측한 것 = 6개
모델이 맞춘 것 = 3개
Precision = $\frac{3}{6} = \frac{1}{2} = 0.5$ 입니다.
반대로 recall은 실제 정답들중, 모델이 맞춘 것들이므로
실제 정답 개수 = 7개
모델이 맞춘 것 = 3개
Recall = $\frac{3}{7} \approx 0.43$ 입니다.
이때 recall을 올리려면 모델은 어떻게 해야할까요?
잘못 예측한 것들을 정확하게 맞추도록 하면 됩니다!
즉, 모델이 예측한 6개 모두 정답이면 됩니다.
하지만, 모델은 생각보다 마음대로 학습되지 않습니다.
실제로 학습을 시키다보면, 아래와 같은 경우가 생깁니다.
위와 같이 어느 한쪽만 만족시키는 결과를 도출하는 경우가 많습니다.
따라서 문제 상황에 따라 적절하게 precision과 recall을 조절해주어야합니다.
문제 상황이 정확한 예측을 필요로 한다면, 어느정도 precision이 recall보다 높도록 학습시키고
정답을 잘 맞추는 것을 필요로 한다면 recall이 precision보다 높도록 상황에 맞게 조절해주는 것을 목표로 해야합니다.
결론
위 지표는 모델을 평가하기 위해 나왔습니다.
자신이 만든 모델을 혹은 누군가가 만든 모델을 적절하지 않은 지표로 해석해서, 너무 잘 만든 모델이라고 평가하거나
너무 형편없는 모델이라고 평가하는 경우를 방지하기 위해 다양한 지표들을 사용해야합니다.