欧氏距离、曼哈顿距离与切比雪夫距离详解
欧氏距离、曼哈顿距离与切比雪夫距离详解
1. 前言
在数学、机器学习和数据科学中,距离度量是衡量两个向量之间差异程度的核心工具。不同的距离定义适用于不同的场景,合理选择距离度量能直接影响模型的性能与结果的准确性。
本文将详细介绍三种最基础也是最常用的距离度量——欧氏距离、曼哈顿距离和切比雪夫距离,涵盖定义、公式、二维示意图、代码实现及实际应用场景。
2. 通用定义:Lp 范数与闵可夫斯基距离
三种距离可以被统一在闵可夫斯基距离(Minkowski Distance)的框架下:
$$
D_p(x, y) = \left( \sum_{i=1}^{n} |x_i - y_i|^p \right)^{1/p}
$$
其中:
- $n$ 为空间的维度;
- $p$ 是一个参数,决定了距离的类型;
- 当 $p = 1$ 时为曼哈顿距离;
- 当 $p = 2$ 时为欧氏距离;
- 当 $p \to \infty$ 时为切比雪夫距离。
理解这一统一关系后,下面分别展开讨论每种距离。
3. 欧氏距离(Euclidean Distance)
3.1 定义
欧氏距离是日常生活中最直观的”直线距离”——连接两点之间的最短线段长度。
3.2 公式
对于 $n$ 维空间中的两点 $x = (x_1, x_2, \dots, x_n)$ 和 $y = (y_1, y_2, \dots, y_n)$,欧氏距离定义为:
$$
d_{\text{euclidean}}(x, y) = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2 + \dots + (x_n - y_n)^2}
$$
即:
$$
d_{\text{euclidean}}(x, y) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}
$$
3.3 二维示例
二维平面上点 $A(1, 1)$ 和点 $B(4, 5)$:
$$
d = \sqrt{(4-1)^2 + (5-1)^2} = \sqrt{9 + 16} = \sqrt{25} = 5
$$
3.4 几何意义
欧氏距离对应直角三角形斜边的长度,本质是勾股定理在高维空间的推广。
3.5 Python 实现
1 | import math |
3.6 应用场景
- K-Means 聚类:默认使用欧氏距离作为样本与聚类中心的相似度度量;
- KNN 算法:最常用的距离度量方式;
- 三维空间物理距离计算:地理坐标、计算机视觉中的点云配准。
4. 曼哈顿距离(Manhattan Distance)
4.1 定义
曼哈顿距离又称城市街区距离(City Block Distance)或 L1 距离,度量的是两点在各个坐标轴方向上的绝对差值之和。名称源于曼哈顿的棋盘式街道布局——车辆只能沿垂直或水平方向行驶,无法直接穿越大楼走直线。
4.2 公式
对于 $n$ 维空间中的两点 $x$ 和 $y$:
$$
d_{\text{manhattan}}(x, y) = |x_1 - y_1| + |x_2 - y_2| + \dots + |x_n - y_n|
$$
即:
$$
d_{\text{manhattan}}(x, y) = \sum_{i=1}^{n} |x_i - y_i|
$$
4.3 二维示例
二维平面上点 $A(1, 1)$ 和点 $B(4, 5)$:
$$
d = |4-1| + |5-1| = 3 + 4 = 7
$$
与欧氏距离(等于 5)相比,曼哈顿距离更大——因为曼哈顿距离走的是”直角折线”,而非直线。
4.4 几何意义
在二维网格中,曼哈顿距离等于从起点到终点所经过的最短网格路径长度(只能沿横轴或纵轴移动)。
4.5 Python 实现
1 | def manhattan_distance(x: list[float], y: list[float]) -> float: |
4.6 应用场景
- L1 正则化(Lasso 回归):L1 范数作为惩罚项,可产生稀疏权重向量;
- 八数码问题/拼图游戏:使用曼哈顿距离作为启发式函数计算 A* 搜索的估算代价;
- 图像处理:计算像素差异的绝对误差和(SAD)。
5. 切比雪夫距离(Chebyshev Distance)
5.1 定义
切比雪夫距离又称棋盘距离,定义为两点在各坐标轴上坐标差绝对值的最大值。在国际象棋中,国王每次可以向任意方向(横、竖、斜)移动一格,从一格走到另一格所需的最少步数即为切比雪夫距离。
5.2 公式
对于 $n$ 维空间中的两点 $x$ 和 $y$:
$$
d_{\text{chebyshev}}(x, y) = \max_{i} , |x_i - y_i|
$$
展开为:
$$
d_{\text{chebyshev}}(x, y) = \max(|x_1 - y_1|, |x_2 - y_2|, \dots, |x_n - y_n|)
$$
5.3 二维示例
二维平面上点 $A(1, 1)$ 和点 $B(4, 5)$:
$$
d = \max(|4-1|, |5-1|) = \max(3, 4) = 4
$$
5.4 几何意义
在二维棋盘格上,切比雪夫距离代表国王从一格走到另一格所需的最少步数——因为国王可以沿对角线移动,所以步数取决于两个坐标差中较大的那个。
5.5 Python 实现
1 | def chebyshev_distance(x: list[float], y: list[float]) -> float: |
5.6 应用场景
- 棋盘游戏 AI:评估棋盘上两棋子间所需最少步数;
- 仓库机器人路径规划:在允许斜向移动的网格环境中计算最短步数;
- 极大值优化问题:Tchebycheff 标量化方法在多目标优化中用于近似 Pareto 前沿。
6. 三种距离对比
6.1 同一示例对比
设 $A(1, 1)$,$B(4, 5)$:
| 距离类型 | 计算结果 | 含义 |
|---|---|---|
| 欧氏距离 | $5$ | 直线最短路径 |
| 曼哈顿距离 | $7$ | 仅横/纵移动的路径 |
| 切比雪夫距离 | $4$ | 允许斜向移动的最短步数 |
三者大小关系:切比雪夫距离 ≤ 欧氏距离 ≤ 曼哈顿距离(当 $p$ 增大时,Lp 距离单调递减或不变)。
6.2 等高线(等距线)对比
以原点为中心的单位等距线(二维空间):
- 欧氏距离:圆形($x_1^2 + x_2^2 = 1$)
- 曼哈顿距离:菱形($|x_1| + |x_2| = 1$)
- 切比雪夫距离:正方形($\max(|x_1|, |x_2|) = 1$)
1 | import numpy as np |
图中红色粗线代表距离等于 1 的等距线,可以直观看到欧氏距离为圆形、曼哈顿距离为菱形、切比雪夫距离为正方形。
6.3 选择指南
| 场景 | 推荐距离 | 原因 |
|---|---|---|
| 连续特征、无异常值 | 欧氏距离 | 符合几何直觉 |
| 高维稀疏数据 | 曼哈顿距离 | 对高维空间中的”距离集中”现象更鲁棒 |
| 各维度尺度一致、网格路径 | 切比雪夫距离 | 仅关心最大差值 |
| 异常值敏感场景 | 曼哈顿距离 | L1 对大偏差的惩罚比 L2 小 |
7. 小结
- 欧氏距离、曼哈顿距离和切比雪夫距离是闵可夫斯基距离在 $p = 2$、$p = 1$ 和 $p \to \infty$ 时的特例;
- 欧氏距离是最常用的直线距离,适合低维连续特征;
- 曼哈顿距离对异常值更鲁棒,适合高维稀疏数据;
- 切比雪夫距离仅关心各维度差异的最大值,适合棋盘类问题;
- 实际应用中应根据数据特征和业务需求选择合适的距离度量。
