---
id: wiki-2026-0508-type-1-vs-type-2-errors
title: Type 1 vs Type 2 Errors
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [False Positive, False Negative, α/β Error]
duplicate_of: none
source_trust_level: A
confidence_score: 0.9
verification_status: applied
tags: [statistics, hypothesis-testing, ml, classification]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
  language: Python
  framework: scikit-learn
---

# Type 1 vs Type 2 Errors

## 매 한 줄
> **"매 Type 1 의 false alarm — 매 Type 2 의 missed detection"**. Hypothesis testing 의 두 mistake — 매 Type 1 (α, false positive) 의 truly null 의 reject, Type 2 (β, false negative) 의 truly false 의 fail-to-reject. 2026 매 ML classifier 의 precision/recall 의 dual.

## 매 핵심

### 매 정의
- **Type 1 (α, false positive)**: 매 H₀ truly true — 매 reject. "매 정상 의 alarm 발생."
- **Type 2 (β, false negative)**: 매 H₀ truly false — 매 fail-to-reject. "매 진짜 problem 의 miss."
- **Power = 1 − β**: 매 H₀ false 의 correctly reject 의 prob.

### 매 Trade-off
- 매 α 감소 → 매 β 증가 (and vice versa) — 매 fixed sample.
- 매 sample size 증가 → 매 둘 다 감소 가능.
- 매 effect size 증가 → 매 power 증가.

### 매 Confusion Matrix mapping
- TP: 매 correct positive.
- FP: 매 Type 1.
- FN: 매 Type 2.
- TN: 매 correct negative.

### 매 Precision/Recall 의 관계
- Precision = TP/(TP+FP) — 매 Type 1 의 적음.
- Recall = TP/(TP+FN) — 매 Type 2 의 적음.
- F1 = harmonic mean.

### 매 응용
1. Medical diagnosis — 매 cancer 의 miss (Type 2) 의 cost > false alarm.
2. Spam filter — 매 ham 의 spam (Type 1) 분류 의 user 의 frustration.
3. Fraud detection — 매 fraud 의 miss 의 cost vs 매 customer 의 friction.
4. A/B test — 매 α=0.05 의 standard.
5. Quality control — 매 defective batch 의 ship 의 Type 2.

## 💻 패턴

### Confusion matrix — sklearn
```python
from sklearn.metrics import confusion_matrix, classification_report

y_true = [0, 1, 1, 0, 1, 0, 0, 1]
y_pred = [0, 1, 0, 0, 1, 1, 0, 1]

tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
print(f"Type 1 (FP): {fp}")
print(f"Type 2 (FN): {fn}")
print(classification_report(y_true, y_pred))
```

### Threshold tuning — 매 α/β trade-off
```python
import numpy as np
from sklearn.metrics import precision_recall_curve

probs = model.predict_proba(X_test)[:, 1]
prec, rec, thr = precision_recall_curve(y_test, probs)

# Pick threshold for desired recall (low Type 2)
target_recall = 0.95
idx = np.argmin(np.abs(rec - target_recall))
print(f"Threshold: {thr[idx]:.3f}, Precision: {prec[idx]:.3f}")
```

### Power analysis (statsmodels)
```python
from statsmodels.stats.power import TTestIndPower

analysis = TTestIndPower()
n = analysis.solve_power(
    effect_size=0.3,
    alpha=0.05,
    power=0.80,
    alternative='two-sided'
)
print(f"Required n per group: {n:.0f}")
```

### Cost-sensitive classification
```python
from sklearn.linear_model import LogisticRegression

# Cancer detection — Type 2 cost 100x Type 1
clf = LogisticRegression(class_weight={0: 1, 1: 100})
clf.fit(X_train, y_train)
```

### Bonferroni — multiple testing 의 α inflation 보정
```python
alpha = 0.05
m = 20  # number of tests
alpha_corrected = alpha / m
print(f"Bonferroni-corrected α: {alpha_corrected}")  # 0.0025
```

### ROC vs PR curve — imbalanced data
```python
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc

fpr, tpr, _ = roc_curve(y_test, probs)
plt.plot(fpr, tpr, label=f"AUC={auc(fpr, tpr):.2f}")
plt.xlabel("FPR (Type 1 rate)")
plt.ylabel("TPR (1 - Type 2 rate)")
plt.legend(); plt.show()
```

## 매 결정 기준
| 상황 | Priority |
|---|---|
| Cancer screening | 매 Type 2 의 minimize — 매 high recall. |
| Criminal trial (presumed innocent) | 매 Type 1 의 minimize — 매 high precision. |
| Spam filter | 매 Type 1 의 minimize (ham 의 spam X). |
| Fraud detection | 매 Type 2 의 minimize. |
| Drug approval (FDA) | 매 strict α=0.025 (one-sided). |
| Imbalanced classification | PR-AUC > ROC-AUC. |

**기본값**: 매 cost asymmetry 의 explicit 의 정의. α=0.05, power=0.80 의 default. 매 imbalanced 의 PR curve.

## 🔗 Graph
- 부모: [[Hypothesis Testing]] · [[Statistical Inference]]
- 변형: [[α Error]] · [[β Error]] · [[Power Analysis]]
- 응용: [[A/B Testing]] · [[Classifier Threshold]] · [[Medical Screening]]
- Adjacent: [[Precision Recall]] · [[ROC AUC]] · [[Confusion Matrix]] · [[Bonferroni Correction]]

## 🤖 LLM 활용
**언제**: 매 binary decision — classification, hypothesis test, A/B test 의 trade-off 분석.
**언제 X**: 매 regression / multi-class 의 직접 적용 X — 매 generalization 필요.

## ❌ 안티패턴
- **매 α=0.05 의 blind use**: 매 domain 의 cost 무시.
- **매 ROC-AUC 의 imbalanced 의 사용**: 매 misleading — PR-AUC 사용.
- **매 multiple testing 의 보정 X**: 매 family-wise α inflation.
- **매 power analysis 의 X — 매 underpowered study**: 매 Type 2 high.
- **매 threshold 0.5 의 default**: 매 cost asymmetry 의 ignore.

## 🧪 검증 / 중복
- Verified (Wasserman, "All of Statistics"; sklearn metrics docs).
- 신뢰도 A.

## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — Type 1/2 errors + ML mapping + power analysis |
