【机器学习】数学知识:欧式距离(Euclidean Distance)和曼哈顿距离(Manhattan Distance)
欧式距离和曼哈顿距离是两种常用的距离度量方法,用于衡量两点之间的相似性或差异性。它们在几何分析、数据挖掘、机器学习等领域有广泛应用。
1. 欧式距离
概念
欧式距离(Euclidean Distance)是最常见的直线距离度量方法,源于欧几里得几何学。它表示两点之间的直线距离,类似于二维或三维空间中两点间的最短路径。
公式
在 n-维空间中,给定两点 和 ,欧式距离公式为:
欧式距离的发现
欧式距离的起源可以追溯到古希腊数学家欧几里得(Euclid,约公元前300年),其在著作《几何原本》(Elements)中系统化了几何学的基础知识。
欧式几何定义了空间中点与点之间的最短距离,即“直线距离”,由此衍生出欧式距离的概念。
-
基本原理:勾股定理 欧式距离公式源于勾股定理:在直角三角形中,斜边的平方等于两直角边的平方和。
推广到 n-维空间,给定两点 和 ,距离公式扩展为:
-
主要特点 欧式距离定义了连续空间中两点之间的“几何距离”,强调的是全局最短路径。这一概念与自然界中的最短路径问题高度吻合。
经典应用案例
- 聚类分析:例如 K-Means 聚类算法使用欧式距离衡量样本点与聚类中心的距离。
- 图像处理:计算图像像素值的差异。
2. 曼哈顿距离
概念
曼哈顿距离(Manhattan Distance)也称为“城市街区距离”或“L1 距离”,表示两点之间的路径长度,假设只能沿水平和垂直方向移动,类似于网格状街道上的步行距离。
公式
在 n-维空间中,给定两点 和 ,曼哈顿距离公式为:
曼哈顿距离的发现
曼哈顿距离的概念起源于网格化城市模型的研究,最初应用于街道规划和城市交通问题。名字来源于美国纽约的曼哈顿区,该区域的街道呈现规则的网格状布局。
-
基本思想 在曼哈顿街道中,车辆或行人通常沿着水平和垂直方向移动,因此实际距离是路径上水平方向和竖直方向的距离之和,而非欧式距离的直线距离。
-
数学化描述 对于二维空间中两点 和 ,其曼哈顿距离定义为:
推广到 n-维空间,计算每一维的绝对差值并累加即可,公式为:
-
主要特点 曼哈顿距离描述了离散空间或网格系统中最短路径,适合用于模拟实际城市中路径优化和步行距离等问题。
经典应用案例
- 推荐系统:衡量用户偏好之间的距离。
- 路径规划:模拟城市中的最短步行距离。
3. Python 实现及图例
以下代码对欧式距离和曼哈顿距离进行计算,并通过图形化展示两种距离的差异。
代码示例
import numpy as np
import matplotlib.pyplot as plt
# 定义两点
P = np.array([1, 2])
Q = np.array([4, 6])
# 计算欧式距离
euclidean_distance = np.sqrt(np.sum((P - Q) ** 2))
# 计算曼哈顿距离
manhattan_distance = np.sum(np.abs(P - Q))
# 打印结果
print(f"欧式距离: {euclidean_distance}")
print(f"曼哈顿距离: {manhattan_distance}")
# 图示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(8, 6))
plt.scatter(P[0], P[1], color='blue', label='Point P (1, 2)')
plt.scatter(Q[0], Q[1], color='red', label='Point Q (4, 6)')
plt.plot([P[0], Q[0]], [P[1], Q[1]], color='green', linestyle='--', label='Euclidean Path')
# 曼哈顿路径
plt.plot([P[0], Q[0]], [P[1], P[1]], color='orange', linestyle='-', label='Manhattan Path')
plt.plot([Q[0], Q[0]], [P[1], Q[1]], color='orange', linestyle='-')
# 坐标轴与图例
plt.axhline(0, color='black', linewidth=0.5)
plt.axvline(0, color='black', linewidth=0.5)
plt.xlim(0, 7)
plt.ylim(0, 7)
plt.grid()
plt.title("欧式距离与曼哈顿距离")
plt.legend()
plt.show()
欧式距离: 5.0
曼哈顿距离: 7
运行结果
- 欧式距离:从 P 到 Q 的最短直线路径,图中为绿色虚线。
- 曼哈顿距离:从 P 到 Q 沿水平和垂直移动的路径,图中为橙色折线。
4. 比较与总结
特性 | 欧式距离 | 曼哈顿距离 |
---|---|---|
移动方式 | 直线 | 垂直+水平 |
应用场景 | 连续数据、物理距离 | 离散数据、网格路径 |
计算复杂度 | 二次方和开平方计算 | 绝对值和累加 |
优点 | 更适合度量几何意义 | 简单计算,鲁棒性强 |
欧式距离更适合分析连续空间中的距离,而曼哈顿距离更适合离散或网格化的场景。根据应用需求选择合适的度量方式尤为重要。