
44번 Ridge 는 모든 계수 를 똑같이 L2로 눌렀습니다. 하지만 절편 는 규제하면 안 됩니다 — y 평균을 조정하는 역할이라 억제하면 데이터 평균이 0 이 아닐 때 편향이 생김. 실전 Ridge 구현은 항상 b 는 규제 제외:
X 앞에 1로 채워진 열 을 붙여서 "augmented X" 를 만들고, 규제 행렬의 (0, 0) 원소만 0 으로 둠:
X_aug = [1, X] # shape (N, D+1)
A = X_aug.T @ X_aug + lam * R # R[0,0] = 0, R[i,i] = 1 for i ≥ 1
theta = A⁻¹ X_augᵀ y
b, w = theta[0], theta[1:]
함수 fit_ridge_with_intercept(X, y, lam) -> (w, b) 를 완성하세요.
w shape (D,), b float.lam = 0 이면 일반 OLS with intercept.| # | 이름 | 검증 |
|---|---|---|
| 1 | lam=0 OLS 복원 | 알려진 x, y 로 확인 |
| 2 | 큰 lam → ‖w‖ 감소 | |
| 3 | b 는 규제 안 됨 | y 에 상수 추가 시 b 만 변함 |
| 4 | 완벽 선형 데이터 fit | y = 2x + 5 정확 |
| 5 | shape | w (D,), b scalar |
코드를 작성하고 Run 을 눌러보세요.