데이터 분석시 데이터간 거리를 측정하는 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에 많이 사용된다.

Footnotes