Distance Metric to Compare Vectors (Data)
L1 Distance (Manhattan distance) VS. L2 Distance (Euclidean distance)
L1 Distance와 L2 Distance는 두 벡터 간의 거리 또는 유사성을 측정하는 일반적인 방법이다.
Manhattan distance라고도 하는 L1 Distance는 두 벡터의 해당 요소 간 절대 차이의 합이다.
수학적으로 두 벡터 p와 q 사이의 L1 Distance는 아래와 같이 정의된다.
L1 Distance (Manhattan distance):
택시가 한 지점에서 다른 지점으로 이동하기 위해 그리드와 같은 도로 시스템을 따라 이동해야 하는 거리를 측정한다는 사실에서 이름을 얻었다고 한다. 여기서 그리드 선은 일련의 직각을 형성한다.
유클리드 Distance라고도 하는 L2 Distance는 두 벡터의 해당 요소 간 차이 제곱합의 제곱근이다. 직선의 두 점 사이의 최단 거리를 측정한다는 사실에서 이름이 붙여졌다. 수학적으로 두 벡터 p와 q 사이의 L2 거리는 다음과 같이 정의된다.
L2 Distance (Euclidean distance):
일반적으로 L2 Distance는 벡터 요소 간의 차이 크기를 고려하기 때문에 L1 Distance보다 더 일반적으로 사용되는 반면, L1 Distance는 절대 값만 고려한다.
그러나 L1 Distance는 요소 간 차이의 크기가 다르고 부호가 중요한 상황에서 유용하게 사용된다.
Examples
아래 그림들은 L1 Distance와 L2 Distance를 시각화한 그림이다.
시각화하기 위해 사용한 코드는 아래와 같다.
import matplotlib.pyplot as plt
import numpy as np
# Define two points
p = np.array([1, 2])
q = np.array([4, 6])
# Calculate L1 distance
l1_distance = np.sum(np.abs(p - q))
# Calculate L2 distance
l2_distance = np.sqrt(np.sum((p - q)**2))
# Set up plot
fig, ax = plt.subplots()
ax.set_xlim([0, 7])
ax.set_ylim([0, 7])
ax.set_aspect('equal')
ax.set_title('L1 Distance (Diamond) and L2 Distance (Circle)')
# Plot the L1 distance
ax.plot([p[0], q[0]], [p[1], q[1]], color='blue', linestyle='--')
ax.add_patch(plt.Rectangle(p, q[0]-p[0], q[1]-p[1], fill=False, edgecolor='red'))
# Plot the L2 distance
ax.plot([p[0], q[0]], [p[1], q[1]], color='green', linestyle='--')
ax.add_patch(plt.Circle(p, l2_distance, fill=False, edgecolor='orange'))
# Show plot
plt.show()
'Artificial Intelligence > ML & DL' 카테고리의 다른 글
[ML] K-Means Clustering (K-평균 군집화) (0) | 2023.04.19 |
---|---|
[정보이론] (Shannon) Entropy, Cross Entropy, KL Divergence (0) | 2023.03.30 |
[ML] K-Nearest Neighbors 알고리즘 (KNN) (0) | 2023.03.30 |
[ML] Class Variation - Intra-class Variation vs. Inter-class Variation (0) | 2023.03.30 |
[ML] 머신러닝야학 2기 - '머신러닝1' 수업 후기 (0) | 2021.01.17 |