
v1 공분산 행렬 은 특성 간 상관 구조를 담고 있음. 이 구조를 "거리" 로 변환한 것이 Mahalanobis distance (Mahalanobis 1936):
유클리드 거리가 모든 축을 동등 가중 하는 반면, Mahalanobis 는 분산과 상관 을 고려:
np.linalg.solve 사용.함수 mahalanobis_dist(X, queries, epsilon=1e-6) 를 완성하세요.
X shape (N, D): 참조 분포 샘플 → 이로부터 .queries shape (M, D): 거리를 측정할 쿼리 포인트들.epsilon: 정규화 항 — .(M,) 각 쿼리의 Mahalanobis 거리.np.linalg.solve(cov, diff.T).T 로 계산, 그다음 내적.| # | 이름 | 검증 |
|---|---|---|
| 1 | 반환 shape (M,) | |
| 2 | 비음수 | |
| 3 | → 거리 ≈ 0 | |
| 4 | 독립 표준 분산 → 거리 = 유클리드 | 일 때 |
| 5 | 상관 있는 분포: 상관 방향과 수직 방향에 따라 거리 변화 | |
| 6 | 특이한 공분산 (N<D) 에도 NaN/inf 없음 | regularization |
| 7 | scipy.spatial.distance.mahalanobis 와 일치 |
n-1 로 나눔(불편추정), 모분산은 n.코드를 작성하고 실행하면 5개의 테스트가 각각 표시됩니다.