ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 수학적 거리의 세계: 나와 상대의 거리는 얼마나 될까?
    데이터/처리 및 분석 2024. 9. 27. 00:38

     

     

     

    여러분은 일상에서 '거리'라는 단어를 얼마나 자주 생각하시나요? 집에서 회사까지의 거리, 또는 친구와의 약속 장소까지 걸리는 거리처럼 우리 생활 속에는 수많은 '거리'가 존재합니다. 대부분은 우리가 직관적으로 이해하는 물리적 공간에서의 직선 거리일 겁니다. 이를 수학에서는 "유클리드 거리"라고 부릅니다. 

     

    그런데, 수학에서 '거리'란 단순히 물리적 공간에서만 존재하는 개념이 아닙니다. 데이터, 문장, 심지어는 벡터와 같은 복잡한 대상들 사이에도 거리가 존재합니다. 오늘은 일상적인 개념을 넘어서 수학적으로 정의된 다양한 거리들, 그 중에서도 특히 많이 사용되고 흥미로운 몇 가지에 대해 이야기해 보려고 합니다.

     

    1. 유클리드 거리: 가장 직관적인 거리

    우리가 가장 익숙한 거리 개념이 바로 유클리드 거리입니다. 두 점 사이의 직선 거리를 나타내죠. 예를 들어, 여러분이 집에서 카페까지 걸어가는 길을 직선으로 잰다면 그게 바로 유클리드 거리입니다.

     

    유클리드 거리는 피타고라스 정리에서 출발합니다. 두 점 \(\ A(x_1, y_1)\)와 \(\ B(x_2, y_2)\) 사이의 거리는 다음과 같은 수식으로 계산됩니다.

     

    $$ d(A,B)=\sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} $$

     

    두 점 간의 차이를 각각 제곱하고 더한 뒤에 그 합의 제곱근을 구하는 과정이죠. 직관적으로 두 점 사이의 "가장 짧은 거리"입니다. 만약 3차원 공간에서라면, 좌표가 하나 더 추가되어 \( z\)축까지 고려한 거리 계산이 가능합니다.

     

    하지만 모든 거리가 이렇게 '직선'으로 계산되는 건 아닙니다. 그럼, 만약 여러분이 길을 직선으로 갈 수 없고 건물을 피해 돌아가야 한다면? 이때는 조금 더 다른 거리가 필요할 것입니다.

     

    2. 맨해튼 거리: 도시의 거리

    이제 도로를 따라 이동해야 하는 상황을 떠올려보세요. 직선으로 갈 수 없고 구불구불한 길이나 교차로를 지나가야 할 때는 어떻게 거리를 측정해야 할까요? 이런 상황에서 맨해튼 거리가 유용합니다. 이름에서 알 수 있듯이, 뉴욕 맨해튼처럼 격자형 도로망을 따라 이동할 때 주로 사용되는 개념이죠. 직선 경로가 아닌, 수직과 수평으로만 이동할 수 있을 때 거리를 계산하는 방식입니다.

     

    맨해튼 거리, 또는 택시거리는 도시 생활에서 매우 친숙한 개념입니다. 한 블록에서 다른 블록으로 이동할 때, 직선으로 갈 수 없고 꼭 수직이나 수평으로만 이동할 수밖에 없을 때 우리는 맨해튼 거리 방식을 자연스럽게 사용하게 됩니다. 예를 들어, 큰 도시에서 신호등과 교차로, 골목길을 피해 가야 하는 상황에서는 유클리드 거리(직선 거리)보다 맨해튼 거리가 훨씬 현실적이겠죠.

     

    수학적으로 맨해튼 거리는 두 점 \(\ A(x_1, y_1)\)와 \(\ B(x_2, y_2)\) 사이의 각 좌표 차이를 절대값으로 더해 계산합니다.


    $$ d(A,B) = |x_2 - x_1| + |y_2 - y_1| $$

     

    대각선으로 이동할 수 없는 격자 공간에서는 이런 방식으로 거리가 더 늘어날 수 있습니다. 다시 말해, 가장 짧은 직선 경로를 선택할 수 없는 상황에서는 맨해튼 거리가 더 직관적인 방식이 되는 것입니다.

     

    3. 체비셰프 거리: 체스판의 왕처럼 생각하기

    이번에는 체스판 위에서 왕이 어떻게 움직이는지를 생각해볼까요? 왕은 대각선, 수직, 수평으로 한 칸씩 자유롭게 이동할 수 있죠. 두 점 사이의 체비셰프 거리는 바로 이런 방식입니다. 두 점 간의 가장 큰 좌표 차이를 기준으로 거리를 계산합니다.

     

    두 점 \( A(x_1, y_1)\)와 \( B(x_2, y_2)\) 사이의 체비셰프 거리는 다음과 같습니다.

     

    $$ d(A,B) = max(|x_2 - x_1|, |y_2 - y_1|) $$

     

    이 계산 방식은 대각선 이동이 가능한 경우에 적합합니다. 체스에서 왕이 도착할 수 있는 최소 이동 횟수를 구하는 것과 비슷하죠. 대각선 이동이 가능한 상황에서는 기존의 맨해튼 거리보다 더 빠르게 도달할 수 있게 됩니다.

     

    4. 해밍 거리: 틀린 답을 찾아라

    이번에는 데이터 간의 차이를 알아보는 해밍 거리입니다. 이 개념은 주로 문자열 또는 이진 데이터 간의 차이를 측정하는 데 사용됩니다. 예를 들어 두 개의 문자열이 얼마나 다른지, 서로 다른 위치에 있는 문자의 개수를 세는 방식이죠.

     

    두 이진 문자열 \( A(x_1, y_1)\) \( B(x_2, y_2)\)  가 있을 때, 해밍 거리는 이렇게 계산합니다.

     

    $$ d(A, B) = \sum_{i=1}^{n} \delta(a_i, b_i) $$

     

    여기서 \( \delta(a_i, b_i)\)는 \( a_i \neq b_i \) 일 때 1을, 같으면 0을 반환하는 함수입니다. 예를 들어, \(\ A=1011 \)과 \(\ B = 1001 \)의 해밍 거리는 1이 다르므로 해밍 거리는 1이 됩니다. 이런 방식으로 두 데이터 간의 차이를 쉽게 계산할 수 있습니다.

     

    하나의 예제를 더 볼게요. '1101'과 '1011'이라는 두 개의 이진 문자열이 있다고 생각해보세요. 이 두 문자열이 얼마나 다른지 알고 싶다면, 각 자리의 숫자를 비교해 다른 자리의 수를 세어보는 것이 바로 해밍 거리입니다. 이 경우 해밍 거리는 2가 됩니다.

     

    해밍 거리는 데이터 분석, 암호학, 오류 수정 등 여러 분야에서 유용하게 사용됩니다. 데이터를 비교하거나 오류를 찾아낼 때, 해밍 거리를 사용하면 효과적으로 차이를 계산할 수 있습니다.

     

    5. 코사인 거리: 각도를 측정하기

    마지막으로 소개할 거리는 코사인 거리입니다. 이 거리는 두 벡터가 이루는 각도에 기반하여 계산되며, 벡터가 서로 같은 방향을 가리킬수록 거리가 작아집니다. 여러분이 데이터의 방향을 중요하게 생각한다면, 코사인 거리가 매우 유용할 것입니다. 이 방식은 특히 문서나 텍스트 간의 유사도를 측정할 때 많이 사용됩니다. 서로 다른 단어로 작성된 두 문서가 있을 때도, 그 문서들이 얼마나 유사한 주제를 다루고 있는지 알 수 있게 해주죠.

     

    코사인 거리 계산 공식은 다음과 같습니다.

     

    $$
    d(A,B) = 1 - \frac{A \cdot B}{||A|| ||B||}
    $$

    여기서 \( A \cdot B \)는 두 벡터의 내적이고, \( ||A|| \)와 \( ||B|| \)는 각 벡터의 크기(노름)입니다. 두 벡터가 이루는 각도가 작을수록 코사인 거리는 0에 가까워지고, 벡터가 완전히 다른 방향을 가리킬수록 1에 가까워집니다. 예를 들어, 서로 다른 주제를 다룬 두 문서의 코사인 거리는 크겠지만, 비슷한 주제를 다룬 문서들 간에는 작게 나올 것입니다.

     

    6. 마할라노비스 거리: 분포를 고려한 거리

    마할라노비스 거리는 데이터 간의 차이를 측정할 때, 그 데이터가 어떻게 분포되어 있는지까지 고려하는 거리입니다. 일반적인 유클리드 거리는 모든 좌표 간의 차이를 동일하게 취급하지만, 마할라노비스 거리는 각 차원이 서로 상관관계가 있는 경우에 이를 반영하여 거리를 계산합니다. 이 거리 개념은 특히 데이터의 분포가 복잡하거나 다양한 변수가 서로 상관관계를 가질 때 유용하게 사용됩니다.

     

    마할라노비스 거리는 다음과 같은 수식으로 표현됩니다:

     

     

    여기서:

    • \( A \)와 \( B \) 는 비교하고자 하는 두 데이터 포인트,
    • \( \Sigma^{-1} \)는 데이터의 공분산 행렬의 역행렬입니다.

    예시로, 동일한 데이터가 여러 방향으로 확장된 경우, 유클리드 거리는 데이터를 잘 구분하지 못할 수 있습니다. 하지만 마할라노비스 거리는 이러한 상황에서 데이터가 분포된 형태를 반영해, 데이터가 밀집된 부분에서는 작은 차이도 큰 거리로 반영하고, 흩어진 부분에서는 더 여유롭게 거리를 계산합니다.

     

    마할라노비스 거리는 이상치 탐지나 다차원 데이터 분석에서 많이 사용됩니다. 예를 들어, 고차원 공간에서 서로 다른 변수들이 상관관계를 가지는 경우에 데이터의 패턴을 탐지하고, 이상치나 다른 그룹 간의 차이를 더 정확하게 파악할 수 있습니다.

     

    결론: 다양한 거리 개념 속에서 우리의 "거리"는 어떻게 정의될까?

    거리라는 개념은 단순한 물리적 공간에서만 머무르지 않고, 데이터, 문장, 벡터와 같은 복잡한 대상들 사이에서도 중요한 역할을 합니다. 우리는 일상에서 유클리드 거리를 통해 두 점 사이의 직선 거리를 생각하지만, 수학적 거리 개념은 훨씬 더 다양한 방식으로 정의될 수 있습니다. 맨해튼 거리처럼 도로를 따라 꺾여 이동해야 할 때는 유클리드 거리가 아닌 다른 방식의 거리가 필요하고, 해밍 거리처럼 이진 데이터나 문자열의 차이를 계산할 때는 전혀 다른 방식으로 거리를 정의합니다.

     

    이러한 수학적 거리 개념은 머신러닝과 데이터 분석에서 필수적인 역할을 합니다. 거리 개념을 이해하는 것은 단순한 개념적 지식을 넘어서 실제 문제 해결에서 매우 중요합니다. 예를 들어, K-최근접 이웃 알고리즘(KNN)은 새로운 데이터를 분류할 때 데이터 간의 거리를 계산하고, 클러스터링에서는 데이터들이 얼마나 가까운지를 통해 그룹화를 수행합니다. 또한 자연어 처리(NLP)에서는 텍스트 간의 유사도를 코사인 거리 등을 통해 계산하여 문서 분류나 검색 시스템에서 활용합니다.

     

    거리 개념은 특히 고차원 데이터 분석과 이상 탐지(Anomaly Detection)에서도 큰 역할을 합니다. 데이터를 기반으로 정상 범위를 벗어난 이상치를 탐지하거나, 이미지 처리와 같은 고차원 벡터 데이터 분석에서도 다양한 거리 개념이 적용됩니다. 이를 통해 데이터 간의 차이와 유사성을 구체적으로 파악할 수 있게 됩니다.

     

    결국, 다양한 거리 개념을 이해하는 것은 머신러닝, 데이터 분석, 텍스트 처리와 같은 현대 기술에서 핵심적인 도구입니다. 거리 개념을 잘 알고 적절히 사용할 수 있다면, 우리는 데이터를 보다 정확하게 분류하고, 유사성을 파악하며, 이상치를 탐지하는 등 데이터의 복잡한 관계를 효과적으로 분석할 수 있습니다.

     

    다음번에 데이터 사이의 거리를 계산할 때, 어떤 거리 개념이 가장 적합할지 한 번 생각해보세요. 각 상황에 맞는 거리 개념을 적절히 사용하는 것이 성공적인 데이터 분석과 모델 구축의 첫 걸음이 될 것입니다. 

Designed by Tistory.