← 문제 목록/SVD-based Least Squares (rank-deficient) [medium]
문제 해설

SVD-based Least Squares (rank-deficient) [medium]

회귀 · medium

preview

SVD-based 최소제곱 [medium]

v1 다변수 회귀 의 정규방정식 (XX)1Xy(X^\top X)^{-1} X^\top yXXX^\top X특이(singular) 하면 폭발. 원인:

  • N<DN < D: 언더디터민드.
  • 특성 간 강한 상관 (collinearity).
  • 상수 열 포함.

SVD 방식

X=UΣVX = U \Sigma V^\top 분해. Moore-Penrose 유사역행렬:

X+=VΣ+UX^+ = V \Sigma^+ U^\top

Σ+\Sigma^+ 는 각 σi\sigma_i 에 대해 1/σi1/\sigma_i (충분히 큰 경우) 또는 0 (작은 경우).

w=X+yw = X^+ y

임계값 규칙

tol 미만의 작은 singular value 는 노이즈 로 간주해 0 처리. NumPy 기본 규칙:

tol=max(N,D)ϵmax(σ)\text{tol} = \max(N, D) \cdot \epsilon \cdot \max(\sigma)

(ϵ1015\epsilon \approx 10^{-15} for fp64)

성질

  • rank-deficient 에서도 finite 해.
  • 반환은 최소 norm 해 (null space 성분 0).
  • XX 가 full-rank 면 일반 정규방정식 해와 일치.
  • np.linalg.lstsq, np.linalg.pinv 의 내부 로직.

과제

함수 fit_linear_svd(X, y, tol=None) 를 완성하세요.

  • X shape (N, D), y shape (N,).
  • tol: singular value 임계값. None 이면 max(N, D) * eps * max(σ).
  • 반환: w shape (D,).
  • 힌트: U, s, Vt = np.linalg.svd(X, full_matrices=False)s_inv = np.where(s > tol, 1/s, 0).

테스트 케이스

#이름검증
1shape (D,)
2full-rank → 정규방정식 해와 일치
3N < D (언더디터민드) → finite + min-norm
4collinear 특성 → finite
5상수 열 포함 → finite
6np.linalg.lstsq 와 일치
7Xw ≈ y residual 최소화 (full-rank)
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.