False Positive와 False Negative 차이 완벽 정리 (2026) — Confusion Matrix·Precision·Recall·F1 Score까지
본문 바로가기
머신러닝

False Positive와 False Negative 차이 완벽 정리 (2026) — Confusion Matrix·Precision·Recall·F1 Score까지

by 찬(Chan) 2026. 5. 20.
반응형


요약 (Quick Answer)

용어 정의 영문 풀이 실생활 예시
False Positive (FP, 가양성) 실제 음성인데 양성으로 잘못 판단 "Wrong Yes" 정상 메일을 스팸으로 분류
False Negative (FN, 가음성) 실제 양성인데 음성으로 잘못 판단 "Wrong No" 암 환자를 정상으로 판정

암기법: False = "잘못", Positive = "Yes", Negative = "No"

  • FP = "Wrong Yes" (없는 걸 있다고 함)
  • FN = "Wrong No" (있는 걸 없다고 함)

어느 쪽이 더 치명적인가?

  • FP가 더 치명적: 스팸 필터, 사기 거래 차단, 채용 자동 탈락 → Precision을 우선
  • FN이 더 치명적: 암 진단, 화재 경보, 보안 침입 탐지 → Recall을 우선

마지막 업데이트: 2026-05-20


Confusion Matrix (혼동 행렬)

이진 분류 모델의 예측 결과를 2×2 표로 정리한 것이 Confusion Matrix입니다.

예측: Positive 예측: Negative
실제: Positive TP (True Positive) FN (False Negative)
실제: Negative FP (False Positive) TN (True Negative)
  • TP (참 양성): 양성을 양성으로 맞게 예측 ✅
  • TN (참 음성): 음성을 음성으로 맞게 예측 ✅
  • FP (가양성, Type I Error): 음성을 양성으로 잘못 예측 ❌
  • FN (가음성, Type II Error): 양성을 음성으로 잘못 예측 ❌

💡 통계학에서는 FP를 Type I Error(1종 오류), FN을 Type II Error(2종 오류)라고 부릅니다.


어디서 FP·FN이 문제가 되는가?

도메인 False Positive (가양성) False Negative (가음성) 더 치명적인 쪽
암 진단 정상인을 암으로 오진 → 불필요한 추가 검사·환자 스트레스 암 환자를 정상으로 진단 → 생명 위협 FN
스팸 필터 정상 메일을 스팸 처리 → 중요 메일 누락 스팸이 받은편지함에 도착 → 불편 FP
신용카드 사기 탐지 정상 거래 차단 → 고객 불편, 매출 손실 사기 거래 통과 → 금전 손실 케이스별 다름
보안 침입 탐지 정상 접근을 침입으로 판단 → 알람 피로 실제 침입을 놓침 → 데이터 유출 FN
자율주행 보행자 인식 보행자 없는데 급정거 → 추돌 사고 보행자를 못 봄 → 인명 사고 FN
채용 AI 자동 탈락 적격자를 탈락 → 인재 손실 부적격자 통과 → 면접 단계에서 거를 수 있음 FP

핵심 평가 지표 4가지

1. Accuracy (정확도)

$$\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}$$
전체 예측 중 맞춘 비율. 단, 데이터가 불균형하면 신뢰할 수 없음 (예: 99%가 음성인 데이터에서 "전부 음성" 예측해도 정확도 99%).

2. Precision (정밀도) — "양성이라고 말한 것 중 진짜 양성은?"

$$\text{Precision} = \frac{TP}{TP + FP}$$
FP를 줄이고 싶을 때 핵심 지표. 스팸 필터, 사기 거래 차단처럼 헛된 알람의 비용이 클 때 우선.

3. Recall (재현율, 민감도) — "실제 양성 중 얼마나 찾아냈나?"

$$\text{Recall} = \frac{TP}{TP + FN}$$
FN을 줄이고 싶을 때 핵심 지표. 암 진단, 침입 탐지처럼 놓치면 큰일 나는 경우 우선.

4. F1 Score — Precision과 Recall의 조화 평균

$$F_1 = 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall}$$
데이터가 불균형하거나 FP와 FN 모두 무시할 수 없을 때, Precision과 Recall 모두 고려해야 할 때 사용. 0~1 사이 값으로 1에 가까울수록 좋음.


어떤 지표를 우선할지 결정하는 법

3가지 질문으로 결정합니다.

Q1. FN이 더 비싼가, FP가 더 비싼가?

  • FN 비용 ↑ (놓치면 큰일) → Recall 최대화
  • FP 비용 ↑ (잘못 잡으면 큰일) → Precision 최대화
  • 비슷하다 → F1 Score

Q2. 데이터가 불균형한가?

  • 양성·음성 비율이 90:10 이상 차이 → Accuracy 버리고 F1, MCC 사용

Q3. 임계값(threshold) 조정이 가능한가?

  • 가능 → ROC-AUC, PR-AUC로 임계값별 트레이드오프 확인
  • Precision과 Recall은 일반적으로 트레이드오프 관계 (하나 올리면 다른 하나 내려감)

Python sklearn으로 확인하기

from sklearn.metrics import (
    confusion_matrix, classification_report,
    accuracy_score, precision_score, recall_score, f1_score
)

y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]  # 실제
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]  # 예측

# 1. Confusion Matrix
cm = confusion_matrix(y_true, y_pred)
# 출력 형식: [[TN, FP], [FN, TP]]
print(cm)
# [[4 1]
#  [1 4]]

# 2. 각 지표 계산
print(f"Accuracy:  {accuracy_score(y_true, y_pred):.3f}")   # 0.800
print(f"Precision: {precision_score(y_true, y_pred):.3f}")  # 0.800
print(f"Recall:    {recall_score(y_true, y_pred):.3f}")     # 0.800
print(f"F1 Score:  {f1_score(y_true, y_pred):.3f}")         # 0.800

# 3. 한 번에 모두 — classification_report 추천
print(classification_report(y_true, y_pred,
                            target_names=['Negative', 'Positive']))

⚠️ sklearn의 confusion_matrix 순서 주의: 일반 교과서는 [[TP, FN], [FP, TN]]로 그리지만, sklearn은 [[TN, FP], [FN, TP]] 순서로 반환합니다.


자주 묻는 질문 (FAQ)

Q. FP와 FN 중 어떤 게 더 나쁜가요?
A. 도메인마다 다릅니다. 암 진단·자율주행·보안 침입 탐지처럼 놓치면 생명·자산 손실이 큰 경우 FN이 더 치명적입니다. 반대로 스팸 필터·정상 거래 차단·채용 자동 탈락처럼 잘못 분류하면 사용자 피해가 큰 경우 FP가 더 치명적입니다.

Q. Precision과 Recall은 동시에 높일 수 없나요?
A. 일반적으로 트레이드오프 관계입니다. 임계값(threshold)을 낮추면 Recall이 올라가지만 Precision이 떨어지고, 반대로 임계값을 높이면 Precision이 올라가지만 Recall이 떨어집니다. F1 Score는 둘의 조화 평균으로 균형점을 보여줍니다.

Q. F1 Score는 언제 쓰나요?
A. (1) 데이터가 불균형할 때 (2) FP와 FN 비용이 비슷할 때 (3) Accuracy 한 값으로 모델을 비교하기 어려울 때 F1 Score를 씁니다.

Q. Type I Error와 Type II Error가 뭔가요?
A. 통계학에서 Type I Error = False Positive (귀무가설을 잘못 기각), Type II Error = False Negative (귀무가설을 잘못 채택)입니다. 머신러닝의 FP/FN과 동일한 개념입니다.

Q. 다중 분류(multi-class)에서는 어떻게 계산하나요?
A. 각 클래스를 "해당 클래스 vs 나머지" One-vs-Rest 방식으로 만들어 클래스별 Precision/Recall/F1을 구한 뒤 macro·micro·weighted 평균으로 종합합니다. sklearn의 classification_report가 자동으로 출력해 줍니다.

Q. ROC-AUC와 PR-AUC 중 어떤 걸 봐야 하나요?
A. 데이터가 불균형(양성이 매우 적음)할 때는 PR-AUC가 더 정직합니다. 균형 잡힌 데이터는 ROC-AUC가 직관적입니다.


728x90
반응형
BIG
Buy me a coffeeBuy me a coffee

댓글