← 문제 목록/Mahalanobis Distance (공분산 기반) [medium]
문제 해설

Mahalanobis Distance (공분산 기반) [medium]

통계 · medium

preview

Mahalanobis Distance [medium]

v1 공분산 행렬 은 특성 간 상관 구조를 담고 있음. 이 구조를 "거리" 로 변환한 것이 Mahalanobis distance (Mahalanobis 1936):

dM(x,μ)=(xμ)Σ1(xμ)d_M(x, \mu) = \sqrt{(x - \mu)^\top \Sigma^{-1} (x - \mu)}

유클리드 거리가 모든 축을 동등 가중 하는 반면, Mahalanobis 는 분산과 상관 을 고려:

  • 분산이 큰 방향 → 큰 거리로 안 봄 (expected variation).
  • 분산이 작은 방향 → 작은 편차도 큰 거리로 인식.
  • 상관 있는 방향 → 상관 패턴을 따르면 거리가 짧음.

왜 쓰나

  • 이상치 탐지 (anomaly detection): 다변량 가우시안에서 dM2χD2d_M^2 \sim \chi^2_D → 임계값 넘는 샘플을 outlier.
  • 분류 (QDA 동치): 다변량 가우시안 가정에서 각 클래스 dMd_M 최소화 = MAP.
  • 군집화: correlation-aware 거리.

수치적 주의

  • Σ1\Sigma^{-1} 직접 계산은 불안정 → 보통 Cholesky 또는 np.linalg.solve 사용.
  • Σ\Sigma 가 특이 (N < D) → regularization: Σ+ϵI\Sigma + \epsilon I 로 ridge.

과제

함수 mahalanobis_dist(X, queries, epsilon=1e-6) 를 완성하세요.

  • X shape (N, D): 참조 분포 샘플 → 이로부터 μ,Σ\mu, \Sigma.
  • queries shape (M, D): 거리를 측정할 쿼리 포인트들.
  • epsilon: 정규화 항 — ΣΣ+ϵI\Sigma \gets \Sigma + \epsilon I.
  • 반환: shape (M,) 각 쿼리의 Mahalanobis 거리.
  • 힌트: np.linalg.solve(cov, diff.T).TΣ1(xμ)\Sigma^{-1} (x - \mu) 계산, 그다음 내적.

테스트 케이스

#이름검증
1반환 shape (M,)
2비음수
3x=μx = \mu → 거리 ≈ 0
4독립 표준 분산 → 거리 = 유클리드Σ=I\Sigma = I 일 때
5상관 있는 분포: 상관 방향과 수직 방향에 따라 거리 변화
6특이한 공분산 (N<D) 에도 NaN/inf 없음regularization
7scipy.spatial.distance.mahalanobis 와 일치
코드 작성
Loading...
실행 결과

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