머신러닝 분류 평가지표 이해하기(정확도, 정밀도, 재현율, F1 스코어)

WANGGEON LEE
5 min readAug 4, 2021

분류(Classification) 모델링을 할 수 있는 ML 알고리즘을 만들었다면, 다음 단계는 해당 모델이 얼마나 잘 작동하는지 통계적으로 확인해보는 것이 중요합니다. 이러한 척도를 계산하는 공식에 대해서 알아봅시다.

정확도 : Accuracy

가장 간단하게 성능을 측정하는 방법은 accuracy(정확도) 를 계산하는 것입니다. Accuracy는 올바르게 예측된 데이터의 수를 전체 데이터의 수로 나눈 값입니다. 수식은 다음과 같습니다.

각각의 term들이 성적 예측 classifier에서 의미하는 바가 무엇인지를 정리하면 다음과 같습니다.

  • True Positives - 모델은 숫자가 5라고 예측하였고 실제로 그런 경우
  • True Negatives - 모델은 숫자가 5보다 낮을 것이라고 예측하였고 실제로 그런 경우
  • False Positives - 모델은 숫자가 5보다 높을 것이라고 예측하였고 실제로는 아닌 경우
  • False Negatives - 모델은 숫자가 5보다 낮을 것이라고 예측하였고 실제로는 아닌 경우

정밀도 : Precision

안타깝게도 recall도 완벽한 통계치는 아닙니다. 예를 들어, 위의 눈내림 예측기 예에서 이번에는 항상 True 로 예측한다고 가정해봅시다. 물론 accuracy는 낮겠지만, 모델이 모든 날을 눈이 내릴거라 예측하기 때문에 recall은 1이 되고 맙니다. 이 모델은 항상 False 로 예측하는 모델과 다를 바 없지만 높은 recall을 보유하게됩니다.

이러한 상황에서 도움을 줄 수 있는 통계치는 바로 precision(정밀도) 입니다. Precision은 모델이 True로 예측한 데이터 중 실제로 True인 데이터 입니다. 위의 예시에서 precision은 실제로 눈이 내린 날의 수를 모델이 눈이 내릴거라 예측한 날의 수로 나눈 값입니다. 수식은 다음과 같습니다.

모델이 항상 눈이 내릴거라 예측하기 때문에 recall은 1 이지만, 실제로 눈이 내리는 날은 많지 않기 때문에 위 모델은 낮은 precision을 갖게 됩니다.

Note: Precision과 recall은 서로 상반되는 관계에 놓여있습니다.

재현율 : Recall

위의 accuracy는 데이터에 따라 매우 잘못된 통계를 나타낼 수도 있습니다. 예를 들어, 내일 눈이 내릴지 아닐지를 예측하는 모델이 있다고 가정해 봅시다. 꽤 괜찮은 성능을 내는 모델을 작성할 수 있는데요, 바로 항상 False 로 예측하는 것입니다. 이 모델은 놀랍게도 굉장히 높은 accuracy를 갖습니다. 왜냐하면 눈이 내리는 날은 그리 많지 않기 때문이죠. 하지만 높은 accuracy를 보유함에도 불구하고 이 모델은 전혀 쓸모가 없습니다.

이러한 상황에서 도움을 줄 수 있는 통계치는 바로 recall(재현율) 입니다. Recall은 실제로 True인 데이터를 모델이 True라고 인식한 데이터의 수입니다. 위의 예시에서 recall은 모델이 눈이 내릴거라 예측한 날의 수를 실제로 눈이 내린 날의 수로 나눈 값입니다. 수식은 다음과 같습니다.

F1 Score : 정밀도와 재현율의 조화 평균

F1 score는 precision과 recall을 조합하여 하나의 통계치를 반환합니다. 여기서 일반적인 평균이 아닌 조화 평균을 계산하였는데, 그 이유는 precision과 recall이 0 에 가까울수록 F1 score도 동일하게 낮은 값을 갖도록 하기 위함입니다. 수식은 다음과 같습니다.

F1 SCORE 공식 (매우 쉽다)

즉,

정확도 : 예측이 정답과 얼마나 정확한가?

정밀도 : 예측한 것중에 정답의 비율은?

재현율 : 찾아야 할 것중에 실제로 찾은 비율은?

F1 Score : 정밀도와 재현율의 평균

이중에서 F1 Score 값이 높으면 성능이 높다고 할 수 있습니다.

정확도, 정밀도, 재현율은 하나만 높다고 성능이 좋은 것이 아니라, 전적으로 모델의 맥락에 달려 있다고 할 수 있습니다. ML을 활용하여 해결하려는 문제가 무엇인지 정확하게 파악하여 필요한 평가지표를 적절하게 활용하는 것이 무엇보다 중요하다고 할 수 있습니다.

sklearn 예시

그럼 20000

--

--