
AdaBoost 한 라운드 (α, weight 업데이트)
53번 가중치 Decision Stump 로 약한 분류기를 뽑았다면, AdaBoost 는 그 결과를 가지고 두 가지를 계산합니다:
1. 분류기 가중치 α
α=21lnϵ1−ϵ
- ϵ = 가중 오차 ∑iwi⋅1[y^i=yi]
- ϵ<0.5 이면 α>0 (의미 있는 약분류기)
- 완벽 (ϵ=0) → α→∞ (실무: clip)
2. 샘플 가중치 업데이트
winew∝wi⋅exp(α⋅1[y^i=yi]⋅2−α⋅0)
쉽게: 틀린 샘플 은 wi⋅eα 로 키우고, 맞은 샘플 은 wi⋅e−α 로 줄인 뒤 정규화 (∑w=1).
과제
함수 adaboost_round(y_true, y_pred, w) 를 완성하세요.
y_true, y_pred ∈ {0, 1}, shape (N,).
w shape (N,), ∑w=1.
- 반환:
(alpha: float, w_new: np.ndarray).
- ε=0 이면 α=large (예: 10.0), w_new = w (업데이트 불필요).
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | 완벽 예측 → α 큼, w 동일 | |
| 2 | ε=0.5 → α=0 | 임의 약분류기의 최악점 |
| 3 | w_new 합 = 1 | 정규화 |
| 4 | 틀린 샘플 w 증가, 맞은 샘플 w 감소 | |
| 5 | 손계산 일치 | toy 예제 |