Back to posts

유클리드 거리 vs 맨해튼 거리: 왜 제곱하고 루트를 씌울까

두 점, 혹은 두 시계열이 얼마나 닮았는지 수치로 재는 두 가지 거리. 유클리드 거리의 제곱-합-루트가 각각 무슨 의미인지, 맨해튼 거리와는 어떻게 다른지 직관까지 정리한다.


들어가며

두 데이터가 "얼마나 닮았나"를 수치 하나로 표현하려면 결국 **거리(distance)**가 필요하다. 좌표 두 개가 얼마나 떨어졌는지, 시계열 두 개가 얼마나 다른 모양인지 — 전부 거리로 환원된다.

가장 많이 쓰는 게 **유클리드 거리(Euclidean distance)**다. 식을 보면 "차이를 제곱하고, 다 더하고, 루트를 씌운다"인데, 처음 보면 이게 왜 이 순서인지 잘 와닿지 않는다. 특히 제곱했다가 다시 루트를 씌울 거면 왜 굳이? 그리고 합치는 게 제곱과 루트 사이에 끼는 게 맞나? 같은 의문이 든다.

이 글은 그 의문을 푸는 글이다. 유클리드 거리의 각 단계가 무슨 의미인지 뜯어보고, 사촌격인 **맨해튼 거리(Manhattan distance)**와 비교한다.

거리란 결국 "차이 벡터의 크기"

점 두 개를 비교한다고 하자. 각 점이 n개의 숫자(좌표)로 이루어져 있다.

  • P = (p₁, p₂, …, pₙ)
  • Q = (q₁, q₂, …, qₙ)

두 점의 차이는 각 좌표끼리 뺀 차이 벡터 d = (p₁−q₁, p₂−q₂, …, pₙ−qₙ)다. "거리"는 이 차이 벡터가 얼마나 큰가를 하나의 숫자로 요약한 값이다.

문제는 "벡터의 크기"를 정의하는 방법이 하나가 아니라는 것. 그래서 거리도 여러 종류가 있다. 그중 둘이 유클리드와 맨해튼이다.

유클리드 거리 — 피타고라스의 일반화

유클리드 거리의 정의는 이렇다.

dEuclid(P,Q)=∑i=1n(pi−qi)2d_{\text{Euclid}}(P, Q) = \sqrt{\sum_{i=1}^{n}(p_i - q_i)^2}

계산 순서를 풀어 쓰면:

  1. 각 좌표끼리 차이를 구한다 → pᵢ − qᵢ
  2. 그 차이를 제곱한다 → (pᵢ − qᵢ)²
  3. 제곱한 값들을 전부 더한다 → Σ(pᵢ − qᵢ)²
  4. 마지막에 루트를 씌운다 → √(…)

이게 임의의 3단계가 아니라, 사실 피타고라스 정리를 차원만 늘린 것이다. 2차원에서 두 점 사이 거리는 √((Δx)² + (Δy)²)였다. 3차원이면 √((Δx)² + (Δy)² + (Δz)²). 똑같은 공식을 n차원으로 늘린 게 위 식이다. 즉 제곱·합·루트는 떼어낼 수 없는 한 묶음이고, 그게 "두 점 사이 직선거리"의 정의 그 자체다.

왜 제곱하나

두 가지 이유가 있다.

(1) 부호를 없앤다. 차이가 +5든 −5든 "벌어진 정도"는 같아야 한다. 그냥 더하면 +5와 −5가 상쇄돼 버린다. 제곱하면 둘 다 25가 되어 상쇄가 안 된다.

(2) 큰 어긋남에 더 큰 벌점을 준다. 제곱은 큰 값을 더 키운다. 한 좌표가 10 어긋나면 100을 기여하지만, 1씩 열 군데 어긋나면 10 × 1 = 10밖에 기여하지 않는다. 즉 유클리드 거리는 "한 군데에서 크게 튄 차이"를 "여러 군데에서 조금씩 난 차이"보다 훨씬 무겁게 본다.

왜 마지막에 루트를 씌우나

제곱을 하면서 단위가 한 번 부풀었다(원래 단위의 제곱이 됐다). 루트는 이걸 원래 단위로 되돌린다. 기하적으로도, 루트를 씌워야 비로소 차이 벡터의 **진짜 길이(직선 길이)**가 된다. 피타고라스에서 빗변 구할 때 마지막에 루트 씌우는 것과 똑같다.

"합치는 게 제곱과 루트 사이에 끼는 것"은 정상이다

순서는 반드시 제곱 → 전부 합 → 루트다. 이 순서가 핵심이다. n개의 차원을 하나의 직선거리로 합치는 단계가 바로 "제곱들의 합"이기 때문이다.

만약 순서를 바꿔서 각 항에 루트를 먼저 씌운 뒤(= 절댓값) 더하면, 그건 유클리드가 아니라 다른 거리가 된다. 그게 바로 맨해튼 거리다.

맨해튼 거리 — 격자 도시의 택시

맨해튼 거리의 정의는 이렇다.

dManhattan(P,Q)=∑i=1n∣pi−qi∣d_{\text{Manhattan}}(P, Q) = \sum_{i=1}^{n} |p_i - q_i|

차이의 절댓값을 그냥 다 더한다. 제곱도 루트도 없다.

이름이 "맨해튼"인 이유는 격자형 도시(맨해튼)에서 택시가 움직이는 방식과 같아서다. 건물을 가로지를 수 없으니, 대각선으로 못 가고 블록을 따라 가로 + 세로로만 이동한다. 그래서 "택시 거리(taxicab distance)"라고도 부른다.

직관:

  • 유클리드 = 새가 직선으로 날아가는 거리 (대각선 허용)
  • 맨해튼 = 택시가 블록 따라 가는 거리 (가로·세로만)

핵심 차이: 큰 한 방 vs 잔펀치

같은 데이터라도 두 거리가 다르게 반응한다. 2차원 예시로 보자. 차이 벡터가 두 경우:

  • 경우 A: 두 좌표가 각각 100씩 어긋남 → (100, 100)
  • 경우 B: 한 좌표만 200 어긋나고 나머지는 0 → (200, 0)
거리경우 A (100,100)경우 B (200,0)
유클리드 (L2)√(100² + 100²) ≈ 141√(200²) = 200
맨해튼 (L1)100 + 100 = 200200 + 0 = 200

맨해튼은 두 경우를 똑같이(200) 본다. 어디서 어긋났든 총합만 같으면 같은 거리다. 반면 유클리드는 경우 B(200)를 경우 A(141)보다 더 멀다고 본다. "한 군데에서 크게 튄 쪽"을 더 다르다고 보는 것 — 이게 제곱의 효과다.

그래서 거칠게 요약하면:

  • 유클리드(L2): 큰 한 방에 민감. 이상치(outlier)·국소적 급변을 강하게 벌준다.
  • 맨해튼(L1): 모든 차이를 공평하게. 이상치에 상대적으로 둔감(robust)하다.

기하로 보는 직관: 원과 마름모

"중심에서 거리가 똑같은 점들의 집합"을 그려 보면 두 거리의 성격이 한눈에 보인다.

  • 유클리드에서 등거리 점들 → 원
  • 맨해튼에서 등거리 점들 → 마름모(45도 돌린 정사각형)
유클리드 (원)            맨해튼 (마름모)
      .-"""-.                  /\
    /         \               /  \
   |     +     |             <  +  >
    \         /               \  /
      '-...-'                  \/

유클리드는 모든 방향으로 똑같이 둥글게 퍼지지만, 맨해튼은 축 방향을 따라 각이 진다. 거리를 어떻게 정의하느냐에 따라 "가깝다"의 모양 자체가 달라지는 것이다.

한 식으로 묶기: 민코프스키 거리

사실 둘은 형제다. **민코프스키 거리(Minkowski distance)**라는 일반식의 특수한 경우일 뿐이다.

dp(P,Q)=(∑i=1n∣pi−qi∣ p)1/pd_p(P, Q) = \left( \sum_{i=1}^{n} |p_i - q_i|^{\,p} \right)^{1/p}
  • p = 1 → 맨해튼 거리 (L1)
  • p = 2 → 유클리드 거리 (L2)
  • p → ∞ → 체비쇼프 거리 (가장 큰 차이 하나만 봄)

p가 커질수록 "큰 차이 하나"의 영향력이 커진다. 유클리드가 맨해튼보다 큰 어긋남에 민감한 이유가 여기서 나온다.

그래서 언제 뭘 쓰나

정답은 없고 데이터 성격에 달렸다. 고를 때 보는 기준 몇 가지.

  • 이상치 민감도: 한 차원에서 크게 튄 값을 "많이 다른 것"으로 보고 싶다 → 유클리드. 튐에 둔감하게 가고 싶다 → 맨해튼.
  • 차원 수: 차원이 아주 많아지면 유클리드 거리들이 서로 비슷해지는 "차원의 저주"가 더 두드러진다. 고차원 희소 데이터에서 맨해튼이 더 안정적일 때가 있다.
  • 스케일: 두 거리 모두 단위가 큰 차원에 휘둘린다. 한 축은 01, 다른 축은 010000이면 큰 축이 거리를 지배한다. 그래서 거리 비교 전에는 보통 정규화(스케일 맞추기)를 먼저 한다.

시계열 패턴 유사도처럼 "두 곡선이 닮았나"를 잴 때도 같은 고민이 들어간다. 유클리드로 가면 특정 시점에서 확 벌어진 곡선을 강하게 다르다고 보고, 맨해튼으로 가면 전 구간의 차이를 고르게 합산한다. 어느 쪽이 맞는지는 "무엇을 닮음으로 볼 것인가"라는 도메인 판단이지, 수식이 정해주는 게 아니다.

마무리

  • 거리는 차이 벡터의 크기를 숫자 하나로 요약한 것이다.
  • 유클리드: 차이를 제곱 → 합 → 루트. 피타고라스의 일반화이자 직선거리. 제곱은 부호 제거 + 큰 어긋남에 큰 벌점, 루트는 단위 복원. 합이 제곱과 루트 사이에 끼는 건 정상이고, 그게 다차원 거리의 정의다.
  • 맨해튼: 차이의 절댓값을 그냥 합산. 격자 도시의 택시 거리. 모든 차이를 공평하게 보고 이상치에 둔감하다.
  • 둘은 민코프스키 거리의 p=2, p=1 케이스다.
  • 고를 때는 이상치 민감도·차원 수·스케일을 본다. 그리고 거리를 재기 전엔 보통 정규화부터.

"왜 제곱하고 루트를 씌우나"의 답은 결국 하나다 — 그게 직선거리를 재는 방법이기 때문이고, 그 과정에서 큰 어긋남을 더 무겁게 보는 성질이 덤으로 따라온다.