정확도와 정밀도 계산 방법 완벽 정리

링크가 복사되었습니다
조회 1

머신러닝 모델의 성능을 평가할 때 정확도(Accuracy)와 정밀도(Precision)는 매우 중요한 지표입니다. 하지만 두 개념이 혼동되기 쉽고, 계산 방법 또한 헷갈릴 수 있습니다. 이 글에서는 정확도와 정밀도의 개념을 명확히 이해하고, 실제 계산 방법을 예시와 함께 자세히 알아보겠습니다.

정확도(Accuracy)란 무엇인가?

정확도는 전체 예측 중에서 올바르게 예측한 비율을 나타냅니다. 즉, 모델이 얼마나 많은 데이터를 정확하게 분류했는지를 보여주는 가장 직관적인 지표입니다. 계산이 간단하여 처음 모델 성능을 평가할 때 주로 사용됩니다.

정확도는 다음과 같은 수식으로 계산됩니다:

$$ \text{Accuracy} = \frac{\text{True Positive} + \text{True Negative}}{\text{True Positive} + \text{True Negative} + \text{False Positive} + \text{False Negative}} $$

여기서 각 용어는 다음과 같습니다:

  • True Positive (TP): 실제 정(Positive)인 데이터를 정(Positive)으로 올바르게 예측한 경우
  • True Negative (TN): 실제 부(Negative)인 데이터를 부(Negative)으로 올바르게 예측한 경우
  • False Positive (FP): 실제 부(Negative)인 데이터를 정(Positive)으로 잘못 예측한 경우 (1종 오류)
  • False Negative (FN): 실제 정(Positive)인 데이터를 부(Negative)으로 잘못 예측한 경우 (2종 오류)

정밀도(Precision)란 무엇인가?

정밀도는 모델이 '정(Positive)'이라고 예측한 것들 중에서 실제로 정(Positive)인 것들의 비율을 나타냅니다. 즉, 정밀도는 '정(Positive)'으로 예측한 결과의 신뢰도를 측정하는 지표입니다. 특히, 잘못된 '정(Positive)' 예측(False Positive)이 치명적인 경우에 중요하게 사용됩니다.

정밀도는 다음과 같은 수식으로 계산됩니다:

$$ \text{Precision} = \frac{\text{True Positive}}{\text{True Positive} + \text{False Positive}} $$

정밀도가 높다는 것은 모델이 '정(Positive)'이라고 예측했을 때, 실제로 정(Positive)일 확률이 높다는 것을 의미합니다.

재현율(Recall)과의 관계

정밀도와 함께 자주 언급되는 지표가 바로 재현율(Recall) 또는 민감도(Sensitivity)입니다. 재현율은 실제 정(Positive)인 데이터 중에서 모델이 정(Positive)으로 올바르게 예측한 비율을 나타냅니다.

$$ \text{Recall} = \frac{\text{True Positive}}{\text{True Positive} + \text{False Negative}} $$

재현율이 높다는 것은 모델이 실제 정(Positive)인 데이터를 놓치지 않고 잘 찾아낸다는 것을 의미합니다. 정확도, 정밀도, 재현율은 서로 trade-off 관계에 있는 경우가 많으므로, 문제의 특성에 맞는 지표를 선택하는 것이 중요합니다.

예시를 통한 계산 방법

스팸 메일 분류 모델을 예로 들어 정확도와 정밀도를 계산해 보겠습니다. 총 100개의 메일이 있고, 이 중 10개가 실제 스팸 메일이라고 가정합니다.

모델의 예측 결과는 다음과 같습니다:

  • 실제 스팸 메일 10개 중 8개를 '스팸'으로 올바르게 예측 (TP = 8)
  • 실제 스팸 메일 2개를 '정상'으로 잘못 예측 (FN = 2)
  • 실제 정상 메일 90개 중 5개를 '스팸'으로 잘못 예측 (FP = 5)
  • 실제 정상 메일 90개 중 85개를 '정상'으로 올바르게 예측 (TN = 85)

이제 이 데이터를 바탕으로 정확도와 정밀도를 계산해 보겠습니다.

1. 정확도 계산:

$$ \text{Accuracy} = \frac{8 + 85}{8 + 85 + 5 + 2} = \frac{93}{100} = 0.93 $$

이 모델의 정확도는 93%입니다. 전체 100개의 메일 중 93개를 올바르게 예측했습니다.

2. 정밀도 계산:

$$ \text{Precision} = \frac{8}{8 + 5} = \frac{8}{13} \approx 0.615 $$

이 모델의 정밀도는 약 61.5%입니다. 모델이 '스팸'이라고 예측한 13개의 메일 중에서 실제로 스팸인 메일은 8개뿐입니다. 즉, 스팸으로 예측한 것 중에 5개는 정상 메일이었습니다.

3. 재현율 계산:

$$ \text{Recall} = \frac{8}{8 + 2} = \frac{8}{10} = 0.8 $$

이 모델의 재현율은 80%입니다. 실제 스팸 메일 10개 중에서 8개를 '스팸'으로 올바르게 예측했습니다. 2개의 스팸 메일을 놓쳤습니다.

어떤 지표를 사용해야 할까?

어떤 지표를 사용할지는 해결하려는 문제의 특성에 따라 달라집니다.

  • 정확도: 전체 데이터에서 올바른 예측 비율이 중요할 때 사용합니다. 데이터 불균형이 심하지 않을 때 유용합니다.
  • 정밀도: '정(Positive)'으로 예측한 결과의 신뢰도가 중요할 때 사용합니다. 예를 들어, 스팸 메일 분류에서 정상 메일을 스팸으로 잘못 분류하면 안 되는 경우 (FP를 최소화해야 하는 경우)에 중요합니다. 의료 진단에서 건강한 사람을 병으로 오진하는 경우도 마찬가지입니다.
  • 재현율: 실제 '정(Positive)'인 데이터를 얼마나 잘 찾아내는지가 중요할 때 사용합니다. 예를 들어, 암 진단에서 실제 암 환자를 놓치지 않아야 하는 경우 (FN을 최소화해야 하는 경우)에 중요합니다.

F1 Score

정밀도와 재현율은 종종 상반된 경향을 보입니다. 정밀도를 높이려면 재현율이 낮아지는 경우가 많고, 그 반대도 마찬가지입니다. 이 두 지표를 종합적으로 고려하기 위해 F1 Score가 사용됩니다. F1 Score는 정밀도와 재현율의 조화 평균입니다.

$$ \text{F1 Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} $$

F1 Score는 정밀도와 재현율이 모두 높을수록 높아지므로, 두 지표의 균형을 평가하는 데 유용합니다.

정확도와 정밀도(그리고 재현율)는 머신러닝 모델의 성능을 다각도로 이해하는 데 필수적인 지표입니다. 각 지표의 의미와 계산 방법을 정확히 파악하고, 문제 상황에 맞는 적절한 지표를 선택하여 모델을 평가하는 것이 중요합니다.

이 글이 도움이 되셨나요?← 홈으로