Tikhonov 정규화
x^λ=argxmin∥Ax−y∥2+λ∥x∥2
의 해는 A의 얇은 SVD A=Udiag(si)V⊤로 다음과 같이 쓸 수 있다.
x^λ=i∑fisiui⊤yvi,fi=si2+λsi2.
함수 tikhonov_svd(A, y, lam)를 완성해 (x, f)를 반환한다. x는 해(shape (n,)), f는 필터 인자(특이값 순서대로, shape (min(m, n),))다.
테스트는 다음을 확인한다.
- 정규방정식 (A⊤A+λI)x=A⊤y의 해와 같다.
- 필터 인자는 0과 1 사이이고, 특이값이 클수록 1에 가깝다.
- λ가 커질수록 해의 노름은 줄고 잔차 노름은 는다.
- 특이값이 0에 가까운 성분에서도 0으로 나누지 않는다(힌트: fi/si=si/(si2+λ)로 계산한다).
힌트: np.linalg.svd(A, full_matrices=False).