실습 · 연습문제 2개
ridge가 고르는 해 ridge-solution
특징 행렬 의 열이 종속이면 최소제곱 회귀의 해가 무수히 많다. ridge 회귀는 손실
을 최소화해 그중 하나를 고른다. 의 gradient를 0으로 두면 다음 연립방정식이 나온다.
함수 ridge(X, y, lam)를 완성해 이 해 를 반환한다.
| 인자 | shape |
|---|---|
X |
(N, D) |
y |
(N,) |
lam |
스칼라, lam > 0 |
반환하는 w의 shape은 (D,)이다. 테스트는 다음을 확인한다.
- 위 연립방정식을 만족한다.
- 똑같은 열이 두 개 있으면 두 계수가 같다(대칭인 해를 고른다).
- 가 커질수록 가 줄어든다.
- 가 아주 작으면
np.linalg.lstsq가 주는 최소 노름 해에 가까워진다.
힌트: 는 이면 항상 가역이다. 역행렬을 직접 구하지 말고 np.linalg.solve를 쓴다.
생각해 볼 것: 똑같은 열 두 개의 계수는 왜 같아질까? 두 계수의 합이 같은 해들 가운데 이 가장 작은 것은 어느 것인가?
해의 구조 판정 solution-structure
선형시스템 의 해는 없거나, 정확히 하나이거나, 무수히 많다. 함수 solution_structure(A, b, tol=1e-10)를 완성해 셋 중 하나를 문자열 "none", "unique", "infinite"로 반환한다.
| 인자 | shape | 의미 |
|---|---|---|
A |
(m, n) |
계수 행렬 |
b |
(m,) |
우변 |
tol |
스칼라 | 수치적 rank의 허용오차. np.linalg.matrix_rank(..., tol=tol)에 넘긴다 |
판정 규칙은 본문의 두 사실이다.
- 존재: 이어야 한다. 와 같다.
- 유일성: 해가 있을 때, null space가 이면(rank–nullity로 ) 유일하다.
테스트는 정사각·과결정·미결정 시스템, rank가 부족한 시스템, 잡음 수준에서만 독립인 열이 있는 시스템을 확인한다.
힌트: 행렬 [A | b]는 np.column_stack([A, b])로 만든다.