自学内容网 自学内容网

【机器学习】数学知识:欧式距离(Euclidean Distance)和曼哈顿距离(Manhattan Distance)

欧式距离和曼哈顿距离是两种常用的距离度量方法,用于衡量两点之间的相似性或差异性。它们在几何分析、数据挖掘、机器学习等领域有广泛应用。

1. 欧式距离

概念

欧式距离(Euclidean Distance)是最常见的直线距离度量方法,源于欧几里得几何学。它表示两点之间的直线距离,类似于二维或三维空间中两点间的最短路径。

公式

在 n-维空间中,给定两点 P = (x_1, x_2, ..., x_n)Q = (y_1, y_2, ..., y_n),欧式距离公式为:

d(P, Q) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2}

欧式距离的发现

欧式距离的起源可以追溯到古希腊数学家欧几里得(Euclid,约公元前300年),其在著作《几何原本》(Elements)中系统化了几何学的基础知识。
欧式几何定义了空间中点与点之间的最短距离,即“直线距离”,由此衍生出欧式距离的概念。

  • 基本原理:勾股定理 欧式距离公式源于勾股定理:在直角三角形中,斜边的平方等于两直角边的平方和。

    c^2 = a^2 + b^2 \quad \implies \quad c = \sqrt{a^2 + b^2}

    推广到 n-维空间,给定两点 P = (x_1, x_2, ..., x_n) 和 Q = (y_1, y_2, ..., y_n),距离公式扩展为:

    d(P, Q) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2}
  • 主要特点 欧式距离定义了连续空间中两点之间的“几何距离”,强调的是全局最短路径。这一概念与自然界中的最短路径问题高度吻合。

经典应用案例

  1. 聚类分析:例如 K-Means 聚类算法使用欧式距离衡量样本点与聚类中心的距离。
  2. 图像处理:计算图像像素值的差异。

2. 曼哈顿距离

概念

曼哈顿距离(Manhattan Distance)也称为“城市街区距离”或“L1 距离”,表示两点之间的路径长度,假设只能沿水平和垂直方向移动,类似于网格状街道上的步行距离。

公式

在 n-维空间中,给定两点P = (x_1, x_2, ..., x_n)Q = (y_1, y_2, ..., y_n),曼哈顿距离公式为:

d(P, Q) = \sum_{i=1}^n |x_i - y_i|

曼哈顿距离的发现

曼哈顿距离的概念起源于网格化城市模型的研究,最初应用于街道规划和城市交通问题。名字来源于美国纽约的曼哈顿区,该区域的街道呈现规则的网格状布局。

  • 基本思想 在曼哈顿街道中,车辆或行人通常沿着水平和垂直方向移动,因此实际距离是路径上水平方向和竖直方向的距离之和,而非欧式距离的直线距离。

  • 数学化描述 对于二维空间中两点 P = (x_1, y_1)Q = (x_2, y_2),其曼哈顿距离定义为:

    d(P, Q) = |x_1 - x_2| + |y_1 - y_2|

    推广到 n-维空间,计算每一维的绝对差值并累加即可,公式为:

    d(P, Q) = \sum_{i=1}^n |x_i - y_i|
  • 主要特点 曼哈顿距离描述了离散空间或网格系统中最短路径,适合用于模拟实际城市中路径优化和步行距离等问题。

经典应用案例

  1. 推荐系统:衡量用户偏好之间的距离。
  2. 路径规划:模拟城市中的最短步行距离。

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. 比较与总结

特性欧式距离曼哈顿距离
移动方式直线垂直+水平
应用场景连续数据、物理距离离散数据、网格路径
计算复杂度二次方和开平方计算绝对值和累加
优点更适合度量几何意义简单计算,鲁棒性强

欧式距离更适合分析连续空间中的距离,而曼哈顿距离更适合离散或网格化的场景。根据应用需求选择合适的度量方式尤为重要。


原文地址:https://blog.csdn.net/IT_ORACLE/article/details/143799692

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!