Precision, Recall, F1 Score

상솜공방·2024년 12월 30일

딥러닝

목록 보기
1/4

머신 러닝(특히 분류 모델)에서 모델 성능을 측정할 때, 가장 기본이 되면서도 중요한 개념이 정밀도(precision), 재현율(recall), 그리고 이 둘의 조화평균인 F1 스코어(F1-score)입니다. 이들은 모델이 긍정 클래스(positive class, 예: ‘스팸 메일’, ‘암 환자’ 등)를 얼마나 올바르게 분류하는지를 평가할 때 주로 쓰입니다. 아래에서는 이진 분류(positive vs. negative)를 중심으로 살펴본 뒤, 다중 클래스 상황으로 확장하는 개념도 함께 언급하겠습니다.


1. 전제: 혼동행렬(Confusion Matrix)

이진 분류에서 (예측값 vs. 실제값)에 따른 결과를 표로 정리한 것을 혼동행렬이라고 합니다.

실제 Positive실제 Negative
예측 PositiveTPFP
예측 NegativeFNTN
  • TP (True Positive): 실제 Positive를 Positive로 예측
  • FP (False Positive): 실제 Negative를 Positive로 예측 (오탐)
  • FN (False Negative): 실제 Positive를 Negative로 예측 (미탐)
  • TN (True Negative): 실제 Negative를 Negative로 예측

2. 정밀도 (Precision)

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

  • 정의: “모델이 Positive라고 예측한 것 중에서 실제로도 Positive인 비율”
  • 해석:
    • 거짓 양성(FP)을 얼마나 줄였는가에 대한 지표.
    • 정밀도가 높다는 것은, Positive라고 예측하기만 하면 실제로 그럴 확률이 높다는 의미.
    • 예: 스팸 필터에서 정밀도가 높으면, “스팸이라고 분류된 이메일 중 실제 스팸이 아닌 경우(오진)가 적다”는 뜻.
  • 중요성:
    • FP가 치명적인 문제일 때 중요. 예: 결제 사기 탐지에서 “정상 거래”를 오탐(FP)하는 것은 사용자 불편을 초래하므로, 정밀도를 높이는 것이 관건.

3. 재현율 (Recall)

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

  • 정의: “실제로 Positive인 것 중에서 모델이 Positive라고 잘 찾아낸 비율”
  • 해석:
    • 거짓 음성(FN)을 얼마나 줄였는가를 보는 지표.
    • 재현율이 높다는 것은, 실제 Positive를 놓치지 않고 잘 잡아낸다는 의미.
    • 예: 암 진단 모델에서 재현율이 높으면, “진짜 암 환자를 음성으로 잘못 예측(FN)하는 비율이 낮다”는 뜻.
  • 중요성:
    • FN이 치명적인 문제일 때 중요. 예: 의료 진단에서 “암을 놓치는(FN) 것”이 매우 위험하므로, 재현율을 높이려 노력함.

4. F1 스코어 (F1-score)

F1=2×Precision×RecallPrecision+Recall\text{F1} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

  • 정의: 정밀도와 재현율의 조화평균(Harmonic Mean).
  • 해석:
    • precision과 recall 사이의 균형을 보는 지표.
    • 둘 중 어느 하나만 높고 다른 하나가 너무 낮으면 F1이 낮아진다.
    • 정밀도와 재현율 중 어느 것도 극단적으로 희생하지 않게끔 관리할 때 중요한 지표.
  • 장점:
    • 데이터 불균형(Positive, Negative 클래스 수가 큰 차이가 있을 때) 상황에서 accuracy보다 모델 성능을 더 의미있게 평가할 수 있음.
    • 예: 암 환자가 매우 드문 상황에서, 암 환자를 놓치면 안 되지만(Recall 중요), 그렇다고 일반인을 암 환자로 잘못 예측하는(FP) 횟수도 최소화해야(Precision 중요) 하는 경우, F1이 유용.

5. 다중 클래스 확장

5.1 각 클래스별로 이진 분류 관점 정의

  • 다중 클래스(예: A, B, C)가 있으면, 각 클래스별로 “해당 클래스를 Positive vs. 나머지를 Negative”로 보는 이진 분류 관점을 적용할 수 있습니다.
  • 그 결과, 각 클래스마다 TP, FP, FN을 구한 뒤, precision, recall, F1을 구합니다.

5.2 Micro, Macro, Weighted average

  • 여러 클래스의 지표를 단일 숫자로 요약하고 싶다면, 일반적으로 micro avg, macro avg, weighted avg 등의 방식을 사용합니다.
    1. Micro avg: 모든 클래스의 TP, FP, FN을 합쳐서 정밀도와 재현율을 계산한 뒤, F1을 구함.
    2. Macro avg: 각 클래스별 F1을 구하고, 단순 평균(1Kk=1KF1k\frac{1}{K}\sum_{k=1}^K \text{F1}_k).
    3. Weighted avg: 각 클래스별 F1을 구한 뒤, “클래스 샘플 수 비중”으로 가중 평균.

6. 활용 & 예시

  1. 스팸 필터(Email spam detection)

    • FP(정상 메일을 스팸으로 분류)는 사용자 불편이 크지만, FN(스팸을 놓치는 것)은 광고성 메일 정도로 위험은 덜할 수 있다.
    • Precision이 중요한 경우.
  2. 의료 진단(암 진단 등)

    • FN(암 환자를 놓치는 것)이 매우 치명적. 재검진 기회를 놓치면 환자가 위험해짐.
    • Recall이 중요한 경우.
  3. 사기 거래 탐지

    • FP(정상 거래를 사기로 잘못 분류)가 너무 많으면 사용자 불편 커짐.
    • FN(사기 거래를 놓치면) 회사에 직접적 금전적 손실.
    • Precision과 Recall 둘 다가 중요해 F1 스코어를 보면서 균형을 맞춰야 함.

7. 요약

  • Precision: 예측을 Positive라고 한 것 중 진짜 Positive 비율
  • Recall: 실제 Positive 중 모델이 Positive라고 잘 찾아낸 비율
  • F1-score: Precision과 Recall의 조화평균, 균형을 중시하는 지표
  • Precision을 올리려면 FP를 줄이되, 대신 FN이 늘어날 수도 있음(Recall 감소 위험).
  • Recall을 올리려면 FN을 줄이되, 대신 FP가 늘어날 수도 있음(Precision 감소 위험).
  • F1-score는 둘 사이의 Trade-off를 균형있게 관리하는 데 도움.

결국, 문제 상황(도메인)오류 유형(FP vs. FN) 비용을 얼마나 중요하게 보느냐에 따라, precision, recall 중 어느 쪽에 더 집중할지를 결정하고, F1 스코어를 통해 전체적인 균형을 확인하는 식으로 모델을 평가하는 것이 일반적입니다.

profile
상어 인형을 좋아하는 사람

0개의 댓글