
v1 퍼셉트론 은 마지막 를 그대로 반환. 문제:
Averaged Perceptron (Freund & Schapire 1999, Collins 2002): 모든 step 의 를 평균 해서 반환. 결과적으로:
w = 0, b = 0
w_sum = 0, b_sum = 0
t = 0
for epoch in range(n_iter):
for each (x, y):
if y * (w·x + b) <= 0:
w += y * x
b += y
w_sum += w
b_sum += b
t += 1
return w_sum / t, b_sum / t
중요: w_sum += w 는 모든 step 마다 (오분류 여부 무관). 현재 가 오래 살아있을수록 평균에서 큰 비중.
매 step 누적 합을 저장하면 메모리. 대신 두 쌍 을 유지해 로:
w = 0, u = 0, c = 1
if 오분류:
w += y·x
u += c · y · x
c += 1
return w - u/c
간편성 위해 직접 누적 방식 사용.
함수 fit_avg_perceptron(X, y, n_iter) 를 완성하세요.
(w, b) — 평균된 가중치.y ∈ {-1, +1}.| # | 이름 | 검증 |
|---|---|---|
| 1 | 반환 (w (D,), b float) | |
| 2 | 분리 가능 → 모두 맞음 | |
| 3 | 노이즈 섞인 데이터에서 일반 퍼셉트론 대비 평균 테스트 정확도 ≥ | |
| 4 | 초기 대비 w != 0 | |
| 5 | 학습 중 오분류된 샘플 중 다수가 분리 불가능이어도 finite | |
| 6 | 2D 데이터에서 경계가 합리적 (정답 중심 예측 > 0) | |
| 7 | n_iter 증가 시 평균이 안정화 (분산 감소) |
코드를 작성하고 Run 을 눌러보세요.