데이터 분석시 데이터간 거리를 측정하는 9가지 방법에 대해서
거리 측정방식은 생각보다 다양하다.
- 어떤 방식을 언제 써야 하는지 아는 것은 기본이다.
- 이 것보다 더 많은 측정 방식이 있지만, 우선 숙지를 위해서 요약 및 기록.
거리 측정방식
Euclidian Distance
- 가장 많이 쓰이는 거리 측정 방식
- Feature 별로 단위가 다를 수 있기 때문에 정규화(Normalize) 필요함
- 차원이 높아질 경우 계산량이 급격히 증가하기 때문에 2~3차원 정도의 저차원 데이터에서 쓰일 수 있음
Cosine Similarity
- Euclidian Distance가 가지고 있는 차원 이슈의 대안으로 종종 소개가 됨
- 관측치간 방향만을 설명해줄 뿐 그 정도에 대해서는 설명해주지 못함
- 추천시스템에서 Cosine Similarity를 쓸 경우 다른 유저간의 평점간의 차이에 대해서는 충분히 설명해주지 못함
- 다만 관측치간 차이의 정도가 중요하지 않거나 고차원 데이터에는 유용하게 쓰일 수 있음
Hamming Distance
- 두 관측치간 다른 수치의 갯수를 세는 것으로 관측치간 길이가 다를 경우 사용하기 어려움
- 수치 값을 반영해서 거리를 측정하는 방식이 아니기 때문에 관측치간 수치 값의 차이의 정도가 중요하다고 하면 써서는 안됨
- 오류 검출, 감지의 목적 정도라면 용이한 방법
Manhattan Distance
- Euclidian Distance와 달리 Shortest Path를 사용하지 않고 대각선으로 거리를 계산하지 않음
- 따라서 Shortest Path 보다는 좀 더 큰 거리값을 제공할 가능성이 있음을 고려해야할 필요가 있음
Chebyshev Distance
- 두 레코드간 좌표 차원을 따라 가장 긴 거리 값을 거리값으로 선택하는 방식
- Euclidian이나 Manhattan 대비 사용할 수 있는 경우가 한정적임
- 예를 들어, 최소한의 움직임 횟수를 도출하기 위한 경우에 용이함 → 8번만 방향을 꺾어야 하는 게임이 그러한 케이스일 수 있음
Minkowski
- Chebyshev,Manhattan,Euclidian 을 모두 결합한 경우로 이 세 가지 거리 방식을 이해하지 못하면 쓰기 어려움
- 위의 세가지 거리방식 중 어느 것으로 할지 파라메터로 조정해야할 필요가 있고 계산량 감안시 비효율적일 수 있음
Jaccard Index
- 데이터의 유사도, 다양성을 측정하기 위해 많이 사용된다.
- 특정 크기가 큰 데이터 셋이 Index 계산에 영향을 많이 줄 수 있다.
Haversine
- 위경도를 가진 데이터 간 거리를 측정하는 방식
- 네빅이션에서 많이 쓰이는 방식으로 데이터의 위경도가 정확히 구에 있을 가정하기 때문에 실제로는 쓰기 어렵다.
Sørensen-Dice Index
- Jaccard Index와 유사한 방식으로 계산이 보다 직관적이고 F1 Score와 유사한 형태로 계산을 한다.
- 특정 크기가 큰 데이터 셋이 Index 계산에 영향을 많이 줄 수 있다.
- Image Segmentation이나 Text Similarity에 많이 사용된다.