
요약 (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가 직관적입니다.
False Negative와 False Positive는 이진 분류(binary classification)에서 주로 사용되는 개념입니다.
False Negative(가음성, FN)은
실제로는 긍정(positive) 케이스인데 부정(negative)으로 잘못 분류한 경우를 말합니다.
예를 들어, 암 진단에서 환자가 암에 걸렸는데 검사 결과 음성으로 나온 경우가 해당됩니다.
False Positive(가양성, FP)는
반대로 실제로는 부정(negative) 케이스인데 긍정(positive)으로 잘못 분류한 경우입니다.
예를 들어, 스팸 메일 필터에서 정상 메일을 스팸으로 잘못 분류한 경우가 이에 해당합니다.
이를 기억하기 쉽게 하는 방법은 "False는 잘못됨(Wrong)"을 뜻하고, Negative는 "No", Positive는 "Yes"를 의미한다고 연상하는 것입니다.
False Negative(Wrong No): 실제로는 "Yes"인데 "No"라고 잘못 판단한 경우
False Positive(Wrong Yes): 실제로는 "No"인데 "Yes"라고 잘못 판단한 경우
이렇게 연상하면 False Negative와 False Positive의 개념을 보다 쉽게 기억할 수 있습니다.
'머신러닝' 카테고리의 다른 글
| 내 PC에서 ollama를 사용하여 llama3 모델 실행하기 (0) | 2024.05.10 |
|---|---|
| [issue] tensorflow, keras, transformer 버전 문제 (0) | 2024.03.29 |
| ensemble - 모델의 조합 (0) | 2020.08.13 |
| Voting / Equation - 보팅/평균화 (0) | 2020.08.11 |
| Blending - 블렌딩 (0) | 2020.08.10 |
댓글