7.3 행렬의 네 부분공간과 rank

실습 · 연습문제 2개

ridge가 고르는 해 ridge-solution

특징 행렬 X\mathbf{X}의 열이 종속이면 최소제곱 회귀의 해가 무수히 많다. ridge 회귀는 손실

L(w)=∥y−Xw∥2+λ∥w∥2,λ>0L(\mathbf{w}) = \lVert \mathbf{y} - \mathbf{X}\mathbf{w} \rVert^2 + \lambda \lVert \mathbf{w} \rVert^2, \qquad \lambda > 0

을 최소화해 그중 하나를 고른다. LL의 gradient를 0으로 두면 다음 연립방정식이 나온다.

(X⊤X+λI) w=X⊤y.(\mathbf{X}^\top\mathbf{X} + \lambda\mathbf{I})\,\mathbf{w} = \mathbf{X}^\top\mathbf{y}.

함수 ridge(X, y, lam)를 완성해 이 해 w\mathbf{w}를 반환한다.

인자 shape
X (N, D)
y (N,)
lam 스칼라, lam > 0

반환하는 w의 shape은 (D,)이다. 테스트는 다음을 확인한다.

  • 위 연립방정식을 만족한다.
  • 똑같은 열이 두 개 있으면 두 계수가 같다(대칭인 해를 고른다).
  • λ\lambda가 커질수록 ∥w∥\lVert\mathbf{w}\rVert가 줄어든다.
  • λ\lambda가 아주 작으면 np.linalg.lstsq가 주는 최소 노름 해에 가까워진다.

힌트: X⊤X+λI\mathbf{X}^\top\mathbf{X} + \lambda\mathbf{I}는 λ>0\lambda > 0이면 항상 가역이다. 역행렬을 직접 구하지 말고 np.linalg.solve를 쓴다.

생각해 볼 것: 똑같은 열 두 개의 계수는 왜 같아질까? 두 계수의 합이 같은 해들 가운데 w12+w22w_1^2 + w_2^2이 가장 작은 것은 어느 것인가?

해의 구조 판정 solution-structure

선형시스템 Ax=b\mathbf{A}\mathbf{x} = \mathbf{b}의 해는 없거나, 정확히 하나이거나, 무수히 많다. 함수 solution_structure(A, b, tol=1e-10)를 완성해 셋 중 하나를 문자열 "none", "unique", "infinite"로 반환한다.

인자 shape 의미
A (m, n) 계수 행렬
b (m,) 우변
tol 스칼라 수치적 rank의 허용오차. np.linalg.matrix_rank(..., tol=tol)에 넘긴다

판정 규칙은 본문의 두 사실이다.

  • 존재: b∈C(A)\mathbf{b} \in C(\mathbf{A})이어야 한다. rank⁡[A∣b]=rank⁡A\operatorname{rank}[\mathbf{A} \mid \mathbf{b}] = \operatorname{rank}\mathbf{A}와 같다.
  • 유일성: 해가 있을 때, null space가 {0}\{\mathbf{0}\}이면(rank–nullity로 r=nr = n) 유일하다.

테스트는 정사각·과결정·미결정 시스템, rank가 부족한 시스템, 잡음 수준에서만 독립인 열이 있는 시스템을 확인한다.

힌트: 행렬 [A | b]는 np.column_stack([A, b])로 만든다.