공부정리/Deep learnig & Machine learning

[머신러닝] Mahalanobis Distance From Scratch in Python

sillon 2022. 7. 30. 00:34
728x90
반응형

Mahalnobis Distance

노란색: 공분산 행렬

변수들간에 모두 독립적이고 Variance(분산)가 1로 정규화된다면 그 때 공분산 행렬은 항등원 행렬이 되며 이 때 마할라노비스 거리는 유클리디안 거리와 같아집니다.

즉, 마할라노비스거리는 변수들간 독립적일 때는 유클리디안 거리공식으로 바뀝니다.

 

* 주의할 점: 마할라노비스 거리를 구할 때, KNN을 이용한 알고리즘을 구현하는 경우에는 

 

예측할 데이터셋을 포함하여 공분산을 구하고, 해당되는 변수간의 거리를 구해야합니다...

 

예측할 데이터셋을 포함하지않으면, 그 전에 분포하는 데이터들끼리의 분포만을 고려하게 되어 제대로된 마할라노비스 거리구현이 어렵습니다.

 

파이썬으로 변수간의 공분산을 구하는 방법 중 두가지를 소개해드리겠습니다.

 

1. 넘파이를 이용하여 구현하기

 

- 배열 내, 배열 간 공분산을 구해줌

numpyarr.cov()

 

2. 판다스를 이용하여 구현하기

 

- 표 자체의 공분산을 구해줌

df.cov()

해당 게시글의 코드는 

https://github.com/Kangsuyeon01/data-science-from-scracth-2nd-note

 

GitHub - Kangsuyeon01/data-science-from-scracth-2nd-note

Contribute to Kangsuyeon01/data-science-from-scracth-2nd-note development by creating an account on GitHub.

github.com

를 참고해주시길 바랍니다.

 

+ 직관적으로 이해하기

 

 

728x90
반응형