머신러닝

머신러닝에서의 거리 계산 방법: Euclidean, Manhattan 거리

move84 2025. 4. 12. 08:44
반응형

머신러닝에서 거리 계산은 데이터 포인트 간의 유사성을 측정하는 데 중요한 역할을 한다. 다양한 거리 측정 방법이 존재하며, 각각의 방법은 데이터의 특성과 문제의 요구 사항에 따라 적합성이 다르다. 이 글에서는 대표적인 거리 계산 방법인 Euclidean 거리와 Manhattan 거리에 대해 자세히 알아보고, 실제 코드 예제를 통해 이해를 돕고자 한다.


📏 Euclidean 거리 (Euclidean Distance)
Euclidean 거리는 두 점 사이의 최단 거리를 측정하는 방법으로, 우리가 일반적으로 생각하는 직선 거리를 의미한다. n차원 공간에서 두 점 p와 q 사이의 Euclidean 거리는 다음과 같이 계산된다.

distance(p, q) = sqrt((q1 - p1)^2 + (q2 - p2)^2 + ... + (qn - pn)^2)

여기서 pi와 qi는 각각 점 p와 q의 i번째 차원에서의 좌표값을 나타낸다. Euclidean 거리는 직관적이고 널리 사용되지만, 차원이 증가함에 따라 계산량이 많아지고, 특정 상황에서는 Manhattan 거리에 비해 성능이 떨어질 수 있다.

import numpy as np

def euclidean_distance(p, q):
    p = np.array(p)
    q = np.array(q)
    return np.sqrt(np.sum((q - p) ** 2))

# 예시
p = [1, 2, 3]
q = [4, 5, 6]
dist = euclidean_distance(p, q)
print(f'Euclidean 거리는: {dist}') # Euclidean 거리는: 5.196152422706632

🌆 Manhattan 거리 (Manhattan Distance)
Manhattan 거리는 두 점 사이의 각 차원별 좌표값 차이의 절대값 합으로 정의된다. 이는 마치 Manhattan의 거리처럼 가로와 세로로만 이동하여 도달하는 거리를 의미한다. n차원 공간에서 두 점 p와 q 사이의 Manhattan 거리는 다음과 같이 계산된다.

distance(p, q) = |q1 - p1| + |q2 - p2| + ... + |qn - pn|

Manhattan 거리는 Euclidean 거리에 비해 계산이 빠르고, 차원이 증가해도 계산량이 상대적으로 적게 증가한다. 또한, 데이터의 특성에 따라 Euclidean 거리보다 더 나은 성능을 보일 수 있다. 예를 들어, 데이터가 고차원이고 희소한 경우 Manhattan 거리가 더 적합할 수 있다.

import numpy as np

def manhattan_distance(p, q):
    p = np.array(p)
    q = np.array(q)
    return np.sum(np.abs(q - p))

# 예시
p = [1, 2, 3]
q = [4, 5, 6]
dist = manhattan_distance(p, q)
print(f'Manhattan 거리는: {dist}') # Manhattan 거리는: 9

🎯 거리 계산 방법 선택 시 고려사항
어떤 거리 계산 방법을 선택할지는 데이터의 특성과 문제의 목표에 따라 달라진다. 다음과 같은 사항들을 고려하여 적절한 방법을 선택해야 한다.

  • 데이터의 차원: 고차원 데이터에서는 Manhattan 거리가 더 효율적일 수 있다.
  • 데이터의 밀도: 희소한 데이터에서는 Manhattan 거리가 더 나은 성능을 보일 수 있다.
  • 계산 복잡도: Euclidean 거리는 제곱근 계산 때문에 Manhattan 거리에 비해 계산이 복잡하다.
  • 문제의 특성: 특정 문제에서는 Euclidean 거리나 Manhattan 거리 중 하나가 더 적합할 수 있다.

🔍 다양한 거리 계산 방법
Euclidean 거리와 Manhattan 거리 외에도 다양한 거리 계산 방법이 존재한다. 몇 가지 예를 들면 다음과 같다.

  • Minkowski 거리 (Minkowski Distance): Euclidean 거리와 Manhattan 거리를 일반화한 형태이다. p=2일 때 Euclidean 거리와 같고, p=1일 때 Manhattan 거리와 같다.
  • Cosine 유사도 (Cosine Similarity): 두 벡터 사이의 각도의 코사인 값을 이용하여 유사성을 측정한다. 텍스트 마이닝이나 추천 시스템에서 자주 사용된다.
  • Hamming 거리 (Hamming Distance): 두 문자열에서 서로 다른 문자의 개수를 측정한다. 주로 오류 정정 코드에서 사용된다.

📝 핵심 용어 정리

  • Euclidean 거리 (Euclidean Distance): 두 점 사이의 최단 거리
  • Manhattan 거리 (Manhattan Distance): 각 차원별 좌표값 차이의 절대값 합
  • Minkowski 거리 (Minkowski Distance): Euclidean 거리와 Manhattan 거리를 일반화한 거리
  • Cosine 유사도 (Cosine Similarity): 두 벡터 사이의 각도의 코사인 값
  • Hamming 거리 (Hamming Distance): 두 문자열에서 서로 다른 문자의 개수
반응형