머신러닝

머신러닝 모델 평가 지표: 정확도, 정밀도, 재현율 완벽 분석

move84 2025. 4. 12. 15:03
반응형

머신러닝 모델의 성능을 평가하는 것은 모델 개발의 중요한 단계다. 다양한 평가 지표를 이해하고 적절하게 사용하는 것은 모델의 실제 성능을 정확하게 파악하고 개선하는 데 필수적이다. 이 글에서는 머신러닝 모델 평가에 사용되는 주요 지표인 정확도(Accuracy), 정밀도(Precision), 재현율(Recall) 등을 자세히 알아보고, 각 지표가 어떤 상황에서 유용한지, 그리고 함께 사용하면 좋은 다른 지표들에 대해 설명한다.


🎯 정확도 (Accuracy)
정확도는 전체 예측 중에서 올바르게 예측한 비율을 나타낸다. 즉, 모델이 얼마나 정확하게 데이터를 분류하는지를 나타내는 가장 직관적인 지표다. 정확도는 다음과 같이 계산된다.

정확도 = (True Positive + True Negative) / (True Positive + True Negative + False Positive + False Negative)

  • True Positive (TP): 실제 True 값을 True로 정확하게 예측한 경우
  • True Negative (TN): 실제 False 값을 False로 정확하게 예측한 경우
  • False Positive (FP): 실제 False 값을 True로 잘못 예측한 경우 (Type I 오류)
  • False Negative (FN): 실제 True 값을 False로 잘못 예측한 경우 (Type II 오류)

예를 들어, 100개의 데이터 중 90개를 올바르게 예측했다면 정확도는 90%다. 그러나 정확도는 데이터의 클래스 분포가 불균형할 때 모델의 성능을 제대로 반영하지 못할 수 있다. 예를 들어, 암 환자를 예측하는 모델에서 암 환자 데이터가 매우 적다면, 모델이 모든 환자를 '정상'으로 예측하더라도 높은 정확도를 얻을 수 있다. 따라서 불균형 데이터셋에서는 정확도 외에 다른 평가 지표를 함께 고려해야 한다.


✅ 정밀도 (Precision)
정밀도는 모델이 True라고 예측한 것 중에서 실제로 True인 비율을 나타낸다. 즉, 모델이 Positive라고 예측한 것 중 실제로 Positive인 경우를 얼마나 잘 맞추는지를 나타내는 지표다. 정밀도는 다음과 같이 계산된다.

정밀도 = True Positive / (True Positive + False Positive)

예를 들어, 스팸 메일 분류 모델에서 모델이 스팸이라고 예측한 100건의 메일 중 실제로 스팸인 메일이 80건이라면 정밀도는 80%다. 정밀도는 False Positive를 줄이는 데 초점을 맞춘 지표로, 모델이 Positive라고 예측했을 때 얼마나 신뢰할 수 있는지를 나타낸다.


✨ 재현율 (Recall)
재현율은 실제 True 값 중에서 모델이 True라고 예측한 비율을 나타낸다. 즉, 실제 Positive인 것 중에서 모델이 Positive라고 예측한 경우를 얼마나 잘 맞추는지를 나타내는 지표다. 재현율은 다음과 같이 계산된다.

재현율 = True Positive / (True Positive + False Negative)

예를 들어, 암 환자 진단 모델에서 실제로 암 환자인 100명 중 모델이 암 환자라고 정확하게 진단한 사람이 70명이라면 재현율은 70%다. 재현율은 False Negative를 줄이는 데 초점을 맞춘 지표로, 실제 Positive인 대상을 빠뜨리지 않고 얼마나 잘 찾아내는지를 나타낸다.


⚖️ F1 점수 (F1 Score)
F1 점수는 정밀도와 재현율의 조화 평균이다. 정밀도와 재현율은 서로 Trade-off 관계를 가지기 때문에, 두 지표를 모두 고려하여 모델의 성능을 평가하는 것이 중요하다. F1 점수는 다음과 같이 계산된다.

F1 점수 = 2 * (정밀도 * 재현율) / (정밀도 + 재현율)

F1 점수는 정밀도와 재현율이 모두 높을 때 높은 값을 가지며, 어느 한쪽이 낮으면 F1 점수도 낮아진다. 따라서 F1 점수는 모델의 전반적인 성능을 평가하는 데 유용한 지표다.

def calculate_f1_score(precision, recall):
    f1_score = 2 * (precision * recall) / (precision + recall)
    return f1_score

precision = 0.8
recall = 0.7
f1 = calculate_f1_score(precision, recall)
print(f"정밀도: {precision}, 재현율: {recall}, F1 점수: {f1}")

📊 ROC AUC (Receiver Operating Characteristic Area Under the Curve)
ROC AUC는 이진 분류 모델의 성능을 평가하는 데 사용되는 지표다. ROC 곡선은 False Positive Rate(FPR)에 대한 True Positive Rate(TPR)의 변화를 나타낸다. AUC는 ROC 곡선 아래의 면적으로, 0과 1 사이의 값을 가진다. AUC 값이 1에 가까울수록 모델의 성능이 좋다는 것을 의미한다.

  • False Positive Rate (FPR): 실제 Negative 값을 Positive로 잘못 예측한 비율 (FP / (FP + TN))
  • True Positive Rate (TPR): 실제 Positive 값을 Positive로 정확하게 예측한 비율 (TP / (TP + FN), 즉 재현율과 동일)

ROC AUC는 클래스 분포가 불균형한 데이터셋에서도 모델의 성능을 비교적 잘 평가할 수 있다는 장점이 있다.


📌 적절한 평가 지표 선택
어떤 평가 지표를 선택할지는 문제의 특성과 목표에 따라 달라진다. 예를 들어, 스팸 메일 분류 문제에서는 스팸 메일을 정상 메일로 잘못 분류하는 것(False Negative)보다 정상 메일을 스팸 메일로 잘못 분류하는 것(False Positive)이 더 큰 문제가 될 수 있다. 이 경우에는 정밀도를 높이는 데 초점을 맞추는 것이 좋다. 반대로, 암 환자 진단 문제에서는 암 환자를 정상으로 잘못 진단하는 것(False Negative)이 매우 심각한 결과를 초래할 수 있다. 이 경우에는 재현율을 높이는 데 초점을 맞추는 것이 중요하다.

대부분의 경우, 하나의 지표만으로 모델의 성능을 완벽하게 평가하기는 어렵다. 따라서 여러 평가 지표를 함께 고려하여 모델의 성능을 종합적으로 평가하는 것이 바람직하다.


📚 핵심 용어 정리

  • 정확도 (Accuracy): 전체 예측 중 올바르게 예측한 비율
  • 정밀도 (Precision): True라고 예측한 것 중 실제로 True인 비율
  • 재현율 (Recall): 실제 True 값 중 True라고 예측한 비율
  • F1 점수 (F1 Score): 정밀도와 재현율의 조화 평균
  • ROC AUC (Receiver Operating Characteristic Area Under the Curve): 이진 분류 모델 성능 평가 지표
  • 불균형 데이터셋 (Imbalanced Dataset): 클래스 간 데이터 분포가 불균형한 데이터셋
반응형