
LASSO (L1) 좌표하강법 [medium]
v1 Ridge 는 L2 페널티 (λ∥w∥22) → 가중치를 줄이지만 0으로 만들진 않음. LASSO (Tibshirani 1996) 는 L1 페널티 (λ∥w∥1) → 많은 wj 를 정확히 0 으로 → 자동 특성 선택.
L(w)=2N1∥y−Xw∥2+λ∥w∥1
닫힌 해가 없음 (절댓값 미분 불가). 표준 기법: 좌표 하강법 (coordinate descent).
좌표 하강법
- w←0 초기화.
- 수렴까지:
각 j 에 대해:
- rj=y−Xw+X:,jwj (j번째 성분 빼고 나머지 잔차).
- ρj=X:,j⊤rj.
- zj=∥X:,j∥2.
- soft-thresholding:
wj←zjsign(ρj)⋅max(∣ρj∣−Nλ,0)
max(|ρ| - Nλ, 0) 이 정확히 0 을 만드는 트릭. L2 와의 핵심 차이.
수렴
- 모든 wj 변화 합이
tol 미만이면 종료.
- 또는
max_iter 도달.
과제
함수 fit_lasso(X, y, lam, max_iter=100, tol=1e-6) 를 완성하세요.
- 반환:
w shape (D,).
- 수렴 조건:
max |w_new - w_old| < tol.
- 특성 정규화 가정: 테스트 데이터는 표준화되어 있음 (고려 안 해도 됨).
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | shape (D,) | |
| 2 | lam=0 → Ridge(λ=0) = OLS 와 근사 | |
| 3 | 큰 lam → w = 0 (전부) | |
| 4 | 중간 lam → 희소 (일부 정확히 0) | |
| 5 | 실제 희소 데이터에서 0 위치 맞춤 | |
| 6 | sklearn Lasso(alpha=lam, fit_intercept=False) 와 유사 | |
| 7 | 수렴: max_iter 충분하면 update 변화 작음 | |