[ML] 불균형 데이터에서 Precision과 Recall 이해하기

jul ee·2025년 5월 16일

데이터 성장기

목록 보기
100/139

머신러닝에서 분류 모델을 평가할 때 "정확도(Accuracy)"라는 지표를 가장 먼저 떠올리기 쉽다.

하지만 전체 데이터 중 99%가 Negative이고, Positive는 고작 1%에 불과한 상황이라면 어떨까? 현실의 문제 중에는 양성(Positive) 클래스가 매우 적은 불균형한 데이터가 상당히 많다.

이런 불균형 데이터의 경우에 정확도는 모델의 진짜 성능을 왜곡해서 보여줄 수 있다. 이때 중요한 지표가 정밀도(Precision)재현율(Recall)이다.

이 글에서는 불균형 데이터 상황에서 왜 Precision과 Recall이 중요한지, 그리고 이들의 관계를 어떻게 이해하고 적용할 수 있는지에 대해 정리해 보았다.




🖇  분류 문제 평가 지표

먼저 분류 문제 성능을 평가할 때 자주 사용하는 지표들을 간단하게 살펴보고 넘어가자.

TP:   True Positive
FP:   False Positive
FN:   False Negative
TN:   True Negative

지표의미수식
정확도전체 중에서 맞춘 비율Accuracy=TP+TNTP+FP+FN+TN\text{Accuracy} = \frac{TP + TN}{TP + FP + FN + TN}
정밀도Positive로 예측한 것 중에서 실제로 맞춘 비율Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}
재현율실제 Positive 중에서 모델이 맞춘 비율Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}
F1-scorePrecision과 Recall의 조화 평균F1-score=2P×RP+R\text{F1-score} = 2 * \frac{P × R}{P + R}

Accuracy는 클래스 비율이 균형 잡혀 있을 때는 괜찮지만 한 쪽 클래스가 거의 없는 불균형 상황에서는 신뢰할 수 없다.

이런 맥락에서 Precision과 Recall이 중요해진다는 것으로 이어진다.




🖇  불균형 데이터에서 Accuracy의 함정

데이터가 불균형한 상황에서는 Precision과 Recall이 갖는 의미가 훨씬 중요해진다.

예를 들어

암 진단 데이터에서 전체 환자 1000명 중 실제 양성(Positive)은 단 30명이고, 나머지 970명이 음성(Negative)이라고 하자.

이때 모델이 1명만 Positive로 예측하고 나머지를 전부 Negative라고 하면

  • Accuracy는 999/1000 = 99.9% 로 매우 높다.

  • 그러나 그 1명의 Positive만 맞고 나머지 29명의 암 환자를 놓쳤다면 Recall은 1/30 = 3.3% 에 불과하다.

모델이 암 환자를 놓친 것은 매우 심각한 문제로 이어질 수 있기 때문에 단순한 정확도 대신 Precision과 Recall을 따로 보는 것이 필요하다.




🖇  Precision과 Recall

  • Precision (정밀도)

    → 모델이 Positive라고 예측한 것들 중에서 실제로 Positive였던 비율
    정확히 예측한 Positive의 비율

Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}

  • Recall (재현율)

    → 실제 Positive 중에서 모델이 Positive로 잘 예측한 비율
    놓치지 않고 잡아낸 비율

Precision=TPTP+FN\text{Precision} = \frac{TP}{TP + FN}



🖇  Precision과 Recall은 동시에 극대화할 수 있을까?

두 지표는 보통 trade-off 관계에 있다.

예측 기준을 조정할수록 두 지표에 영향을 미치는 방식이 다르기 때문에 한쪽을 극단적으로 올리면 다른 쪽은 희생될 수밖에 없다.


일반적으로 분류 모델은 확률(0~1)을 예측하고 이 확률이 임계값(threshold)을 기준으로 Positive/Negative를 나눈다.

기본값은 보통 0.5이지만 이 threshold를 조정하면 Precision과 Recall의 균형이 달라진다.

  • Threshold를 높이면Precision ↑, Recall ↓ (정말 확신 있는 경우만 Positive로 예측하므로)
  • Threshold를 낮추면Precision ↓, Recall ↑ (더 많은 케이스를 Positive로 커버하지만, 틀릴 가능성도 높아짐)

예를 들어

  • 스팸 메일을 분류할 때 확신이 드는 메일만 스팸으로 예측하면 Precision은 높겠지만, 많은 스팸을 놓치게 되어 Recall이 낮아진다.

  • 반대로 거의 모든 메일을 스팸으로 예측하면 Recall은 높아지지만 정상 메일까지 스팸 처리해 Precision은 떨어진다. 이 경우에도 마찬가지로 심각한 문제로 이어질 수 있으므로 Precision과 Recall을 따로 보는 것이 필요하다.

Positive로 예측하는 범위를 넓히느냐 좁히느냐에 따라 Precision과 Recall이 서로 반대 방향으로 움직이게 되는 것이다.

아래의 두 극단적인 예를 살펴보면 이해하기 쉽다.

정밀도 100% 만들기

  • 단 1명만 확신할 수 있는 경우에만 Positive로 예측하고, 나머지는 모두 Negative로 예측한다.
  • 이때 FP는 없고 TP만 있기 때문에, Precision = 1/(1+0) = 100%
  • 많은 실제 Positive를 놓칠 수 있어서 Recall은 매우 낮다.

재현율 100% 만들기

  • 모든 데이터를 무조건 Positive로 예측한다.
  • 이러면 실제 Positive는 모두 맞히기 때문에 Recall = 100%
  • 실제 Negative까지 Positive로 예측하므로 FP가 매우 많아지고, Precision은 떨어진다.

불균형 데이터에서는 적절한 threshold가 모델 성능을 좌우하기 때문에 목적에 맞게 Threshold를 조절하는 것이 중요하다.




🖇  그래서 둘 다 고려하려면? F1 Score

정밀도와 재현율을 적절히 균형 있게 고려하고자 할 때 사용하는 지표가 F1-score다.

F1=2PrecisionRecallPrecision+RecallF1 = 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall}
  • 두 값이 모두 클 때 F1도 높아진다.
  • 한 쪽이 작으면 F1도 낮아진다. (조화 평균의 특성)
  • 예를 들어
    • A 모델: Precision=0.9, Recall=0.1 → F1=0.18
    • B 모델: Precision=0.5, Recall=0.5 → F1=0.5

이처럼 F1은 Precision과 Recall 간 균형을 평가할 수 있는 지표다.

단일 지표로 모델의 성능을 비교할 수 있지만 해석 없이 맹신해서는 안 된다는 점을 주의해야 한다.




🖇  불균형 데이터에서 시사점

  1. Accuracy만으로는 모델을 평가하지 말자.

    • 특히 Positive 비율이 낮은 상황에서는 완전히 왜곡된 판단을 줄 수 있다.
  2. 목적에 따라 어떤 지표를 중요시할지 결정해야 한다.

    • 질병 진단 → Recall 우선 (놓치면 안 됨)
    • 스팸 필터 → Precision 우선 (정상 메일 차단 방지)
  3. Threshold 조절을 통해 trade-off를 이해하고, 목적에 맞는 최적 지점을 찾는 것이 중요하다.

    • scikit-learn의 precision_recall_curve, roc_curve 등을 활용하면 시각화 가능
  4. F1-score는 하나의 수치로 전체 성능을 요약할 수 있어 유용하지만, 해석 없이 맹신해서는 안 된다.

  5. 실제 문제에 따라 성능 목표가 달라질 수 있다는 점을 이해한다.





지금까지 분류 문제의 평가 지표와 적용 사례를 통해 불균형 데이터에서 Precision과 Recall이 지니는 의미를 이해해 보았다.

불균형 데이터는 모델 평가를 훨씬 더 까다롭고 복잡하게 만든다. 높은 정확도보다 모델이 무엇을 잘하고 무엇을 놓치고 있는지, 그 trade-off를 어떻게 조정할 것인지가 훨씬 중요하다는 것을 알 수 있었다.

Precision과 Recall, 그리고 F1-score 지표가 이런 판단을 도와줄 수 있는 이유도 함께 살펴보았다.

해결해야 하는 문제의 성격을 이해하고 어떤 지표를 우선시해야 할지 끊임없이 질문하는 연습이 필요하겠다.

profile
AI에 관심을 가지고, 데이터로 가치를 만들어 나가는 과정을 기록합니다.

0개의 댓글