이전의 포스팅에서 실생활에 많이 쓰이는 정확도가 왜 머신러닝 분류쪽에서 주요한
성능 평가 지표로 사용될 수 없는지에 대해서 알아보았고,
정밀도와 재현율을 이해하기 위해서 오차 행렬의 각 요소(FN, FP, TN, TP)들이 의미하는 바를 알아보았다.
오차 행렬의 각 요소에 기반하여 정밀도와 재현율을 표현하자면,
정밀도 = TP / (FP + TP)
재현율 = TP / (FN + TP)
이렇게 수식처럼 나타내는 것이 계산을 하는 경우에는 편리하게 사용이 될 수 있으나,
정밀도와 재현율을 처음 접하는 사람들에게는 어떤 의미인지 이해하기 어려울 수 있다.
정밀도 = TP / (FP + TP)
분모를 보면 FP + TP 이다. FP는 Positive로 예측했지만 틀린 것을 의미하고, TP는 Positive로 예측해서 맞은 것을 의미한다. 즉 FP와 TP를 더했다는 것은 Positive 예측의 전체 개수를 의미한다.
분자는 TP인것으로 보아, 정밀도가 Positive로 예측한 것 중 실제로 해당 예측이 맞은 비율을 의미한 다는 것을 알 수 있다.
재현율 = TP / (FN + TP)
이때 분모의 의미를 파악해 보면 FN은 Negative로 예측했으나 틀린 것을 의미하며,
TP는 Positive로 예측해서 맞은 것을 의미한다. 두 개를 더한 것의 의미를 알아보면,
실제로 해당 값이 Positive인 것들의 전체를 의미한다.
분자는 정밀도와 마찬가지로 TP이다. 재현율은 실제 Positive인 것 중 모델이 Positive로 예측한 비율을 의미한다.
다시 한번 정리를 하자면,
정밀도는 Positive로 예측한 것 중 실제 값이 Positive인 것의 비율을 의미하며,
재현율은 실제 값이 Positive인 것 중 예측 값이 Positve인 것의 비율을 의미한다.
※ 왜 Negative에 대한 성능 측정 지표가 없을까?
성능 측정 지표에서 Positive에 집중을 하는 이유는 분류에서 통상적으로 우리가 알아내고 싶은 정보를 Positive로 두기 때문에, 자연스럽게 Negative를 예측하는 것보다는 Positive를 예측하고 실제로 맞추는 것에 집중한다.
이전에 예로 들었던, 수많은 거래 내역 중에서 금융 사기를 분류해야 하는 경우, 금융 사기를 Positive로 놓고, 일반 거래를 Negative로 둔다. 단순히 의미를 가지고 Positive, Negative를 정하지 않는다.
※ 정밀도와 재현율은 서로 비슷한 지표인데, 굳이 둘을 따로 분리하여 지표로 삼는 것에 대한 이유는 무엇일까?
실제로 둘이 비슷하다. 이런 경우 둘의 공통점보다는 차이점에 대해서 명확하게 짚고 넘어가야할 필요성이 있다.
정밀도 = TP / (FP + TP)
재현율 = TP / (FN + TP)
이렇게 분수로 되어 있는 값을 증가시키려고 할 때, 2가지 방법이 있다.
1. 분자의 크기를 키운다.
2. 분모의 크기를 줄인다.
일단 1번 방법에 대한 관점에서 보자면,
정밀도와 재현율의 분자가 공통되게 TP인 것을 알 수 있다.
두 지표 모두 TP(Postivie로 예측하고 실제로 Positive인 것)를 증가하는 데에 초점을 맞춘다.
1번 방법과는 달리 2번 방법에서는 정밀도와 재현율이 차이를 보인다.
정밀도의 분모 값은 FP + TP이고, 재현율의 분모값은 FN + TP이다.
분모값의 관점에서 정밀도는 FP(잘못된 Positive 예측)를 줄이는 데에 초점을,
재현율은 FN(잘못된 Negative 예측)을 줄이는 데에 초점을 맞춘다는 것을 알 수 있다.
※ 실례에서 어떤 경우에 정밀도가 더 중요하게 여겨지고, 어떤 경우에 재현율이 더 중요하게 여겨질까?
- 정밀도가 재현율보다 더 중요한 경우 :
스펨메일 여부를 판단하는 모델의 경우, 스펨 메일을(Positive)를 일반메일(Negative)로 분류하여도 손실은 크게 없다. (FN의 경우에 해당) 하지만, 일반 메일(Negative)을 스펨메일(Positive)로 분류하여(FP의 경우), 사용자가 필요한 메일을 보지 못할 경우에는 큰 손실이 있을 수 있다.
- 재현율이 정밀도보다 더 중요한 경우 :
암 판단 모델의 경우, 실제 암 환자(Positive)를 음성(Negative)으로 판단하게 된다면, 환자의 생명이 아주 위험해질 수 있다.(FN의 경우) 정상(Negative)인을 양성(Positive)으로 판단하는 것(FP의 경우)은 재검사 등의 불편을 초래할 수는 있지만, 앞의 경우에 비해서는 작은 손실임을 알 수 있다.
이렇게 재현율과 정밀도의 중요성은 사례마다 차이가 있다.
통상적으로 재현율이 정밀도보다 상대적으로 중요한 업무가 많다.
※ 정밀도-재현율 트레이드오프(Trade-off)
위에서 알아본 것처럼 정밀도와 재현율의 중요성은 사례마다 다르다. 정밀도 혹은 재현율이 특별히 강조되야 하는 경우,
머신러닝 모델의 임계값(Threshold)을 조정함으로써 정밀도나 재현율의 수치를 높일 수 있다.
하지만, 정밀도와 재현율은 서로 상호보완적인 관계(둘이 긴밀히 연관되어 있다라는 정도로만 이해해도 된다.)이기 때문에, 한쪽을 강제로 높이게 되면 다른 한 쪽은 떨어지게 되어있다.
이렇게 서로 연관되어 한쪽을 높이면 다른 한쪽이 떨어지는 경우는 단지 정밀도와 재현율 사이에서만 일어나는 일이 아니다. 이런 현상을 트레이드오프(Tradeoff)라고 표현을 한다.
양이 일정한 파이를 둘이서 나누어 먹을 때, 한쪽이 많이 먹으면, 다른 한쪽은 적게 먹을 수 밖에 없는 것과 거의 동일한 원리라고 생각을 하면 쉽게 이해할 수 있다.
이미지 출처 : https://rueki.tistory.com/66
'기계학습 > Machine Learning' 카테고리의 다른 글
[파이썬 머신러닝 완벽가이드] : 사이킷 런 앙상블러닝, 결정 트리 (0) | 2020.08.10 |
---|---|
[파이썬 머신러닝 완벽가이드] : 사이킷 런 평가지표 (F1 Score, ROC&AUC) (0) | 2020.08.07 |
[파이썬 머신러닝 완벽가이드] : 사이킷 런 평가지표 (정확도 , 오차행렬) (0) | 2020.08.06 |
[파이썬 머신러닝 완벽가이드] : 사이킷 런 데이터 전처리 & 피처 스케일링 (0) | 2020.08.05 |
[파이썬 머신러닝 완벽가이드] : 사이킷 런 하이퍼 파라미터 & GridSearchCV - 3 (0) | 2020.08.04 |
최근댓글