跳至主要内容

理解切比雪夫距离:全面指南

了解切比雪夫距离如何为空间问题提供独特方法。通过 Python 和 R 示例,发现其在机器人、GIS 和游戏开发中的应用。
· 10分钟 阅读

使用 AI 探索

数据科学和空间分析在解决复杂问题时高度依赖各种距离度量。尽管曼哈顿距离和欧氏距离广为人知,另一个非常有趣的度量也值得关注:切比雪夫距离。该距离度量为空间关系提供了独特视角,尤其适用于基于网格的环境和多维数据空间。

在本指南中,我们将探讨切比雪夫距离的基本概念、其数学性质以及实际应用场景。我们还将提供 Python 和 R 的实用代码示例,帮助您在自己的项目中实现切比雪夫距离计算。此外,如果您希望深入理解此类度量如何融入更广泛的数据科学工作流,我们的课程 Designing Machine Learning Workflows in Python 提供了关于集成多种分析技术(包括基于距离的学习)的宝贵见解。

“棋盘距离。” 图像由 Dall-E 生成。

什么是切比雪夫距离?

切比雪夫距离(以俄罗斯数学家帕夫努季·切比雪夫命名)被定义为两点在任一坐标轴上坐标差的最大值。从数学上讲,对于 n 维空间中的两点 P = (x1, y1, ..., z1) 和 Q = (x2, y2, ..., z2),切比雪夫距离表示为:

Chebyshev distance formula

这一定义使切比雪夫距离不同于其他常见度量,如曼哈顿距离(对绝对差求和)和欧氏距离(计算直线距离)。 

切比雪夫距离如何工作

让我们看看切比雪夫距离是如何工作的,以便建立直观认识。 

几何解释 

切比雪夫距离强调的是在任一坐标方向上的最大位移,这在运动不局限于水平或垂直路径、而是包含任意直线路径的情境中至关重要。

考虑二维空间中的两点:点 A 的坐标为 (1, 1),点 B 的坐标为 (4, 5)。要找到这两点之间的切比雪夫距离,我们关注任一坐标轴方向上的最大差值。

  • x 轴方向的差:|4 - 1| = 3
  • y 轴方向的差:|5 - 1| = 4

这里,切比雪夫距离为 4,因为切比雪夫距离 = max(3, 4) = 4。

配图展示了网格上的这些点,突出显示了距离点 A 的切比雪夫距离不超过 4 的区域。黄色阴影区域显示了在该距离度量下可达的所有位置。 

Chebyshev Distance Demonstrated in a 2D Coordinate System

在二维坐标系中演示切比雪夫距离。作者绘制。 

网格解释

切比雪夫距离也常被称为棋盘距离,因为在国际象棋的语境中很容易理解:两个格子的切比雪夫距离等于国王从一个格子走到另一个格子所需的步数。这个解释可以在我们的网格中可视化,其中每个数字表示从中心格(国王所在位置)到棋盘上其他格子的切比雪夫距离。

Chebyshev Distance Visualized on a Chessboard Layout棋盘布局中的切比雪夫距离可视化。作者绘制。 

在我们的可视化模型中,国王位于 c5。棋盘上的数字表示从 c5 到所有其他格子的切比雪夫距离。例如,从 c5 到 e7 的距离为 2,因为国王可以通过两步到达 e7:先斜走到 d6,再斜走到 e7。类似地,到最近边缘格(如 c8 或 h5)的距离可以简单按水平或垂直直走的步数计算。

这种基于网格的解释突出了切比雪夫距离在国际象棋等游戏中的实际应用,也与机器人和人工智能中的路径规划算法相关,其目标是在网格中找到点与点之间的最高效路径。

切比雪夫距离的应用

切比雪夫距离的特性使其在多个领域具有价值,尤其是在涉及类似网格结构或可沿不同轴同时移动的场景中。让我们来看一些应用:

机器人与仓储物流

在机器人或自动化系统沿网格模式移动的环境中,切比雪夫距离可用于优化路径规划。例如,农业机器人穿梭于农作物田地,或在结构化环境中的自动驾驶车辆。 

在自动化仓库中,机器人通常沿类似网格的路径移动。切比雪夫距离有助于优化其运动,特别是在允许对角移动时。这种优化能显著提升商品拣选与存储流程的效率。

图像处理

在数字图像分析中,切比雪夫距离用于基于像素的操作。它有助于为各种变换和滤波定义像素邻域。这常用于诸如边缘检测或模式识别等任务。

能够像考虑水平或垂直像素一样便捷地考虑对角像素,使得切比雪夫距离在这些应用中特别有用。

地理信息系统(GIS)

城市规划者和应急服务部门可以使用切比雪夫距离计算在网格地图上两点之间所需的最少步数。这对于在具有网格状街道布局的城市中优化紧急路线规划,或规划高效的公共交通线路具有价值。

在这些情境中,当允许对角移动时,切比雪夫距离可以快速估算出旅行时间或距离。

机器学习与数据科学

在机器学习与数据科学领域,切比雪夫距离可应用于某些聚类算法或异常检测系统。

在某些场景中,任一维度上的最大差异比总体差异更为重要。例如,在异常检测中,只要某个特征上显著偏离,即使其他维度的取值正常,该数据点也可能被视为异常。

游戏开发

除了国际象棋之外,切比雪夫距离在游戏开发中也有更广泛的应用,尤其是在基于网格的游戏中。它可以为既能对角移动又能水平或垂直移动的实体建模移动成本。这在策略游戏、Roguelike,或任何具有网格移动的游戏中特别有用。 

此外,通过引入切比雪夫距离,游戏开发者可以创建更细致和更真实的移动机制,提升玩法与策略深度。

切比雪夫距离的数学性质

切比雪夫距离满足度量空间的全部性质,这对于其在各领域的应用至关重要。让我们逐一验证这些性质:

  1. 非负性:对于任意两点 x 和 y,d(x, y) ≥ 0
    切比雪夫距离始终非负,因为它定义为绝对差的最大值,而绝对差总是非负的。
  1. 同一性(不可分辨者的同一性):d(x, y) = 0 当且仅当 x = y
    一点与其自身的切比雪夫距离始终为 0。如果切比雪夫距离为 0,意味着任一维度上的最大差为 0,进而表明两点完全相同。
  1. 对称性:d(x, y) = d(y, x)
    在计算切比雪夫距离时,点的顺序无关紧要。无论先后次序如何,最大绝对差保持不变。
  1. 三角不等式:d(x, z) ≤ d(x, y) + d(y, z)
    该性质对切比雪夫距离成立。直观上,x 与 z 在任一维度上的最大差,不能大于 x 到 y 与 y 到 z 的最大差之和。

这些性质确保切比雪夫距离在各种数学与实践应用中表现一致且符合直觉。

与其他距离度量的比较

在下面的可视化中,我们比较了曼哈顿距离、欧氏距离与切比雪夫距离的差异: 

Comparison of Chebyshev, Manhattan, and Euclidean Distances

切比雪夫、曼哈顿与欧氏距离的比较。作者绘制。 

  • 曼哈顿距离(D=7): 以品红色虚线表示,该度量对笛卡尔坐标的绝对差求和。常被可视化为沿网格线以直角路径行进的路线,类似于现实中的城市街区距离,只能沿正交街道前进。若想更深入了解该度量,您可以参阅我们的综合教程 What is Manhattan Distance? 
  • 欧氏距离(D=5): 以绿色实线表示,即欧氏空间中两点之间的“直线”距离。这是最直观的距离形式:连接两点的直接路径。
  • 切比雪夫距离(D=4): 以黄色阴影区域表示,该距离度量定义为一对对象坐标绝对差的最大值。它在允许从网格点向任意方向(包括对角)移动的场景中尤为有用。

与闵可夫斯基距离的关系

切比雪夫距离与更广义的一类距离度量——闵可夫斯基距离——密切相关。事实上,切比雪夫距离是闵可夫斯基距离的一个特殊情形。

点 x = (x₁, ..., xn) 与 y = (y₁, ..., yn) 之间的 p 阶闵可夫斯基距离定义为:

Chebyshev distance and Minkowski distance

其中:

  • p ≥ 1 为实数
  • n 为维度数

当 p 趋于无穷大时,切比雪夫距离作为一个特殊情形出现。数学上可表示为:

Chebyshev distance as a special case of Minkowski distance

这一关系将切比雪夫距离置于与其他著名距离度量的对比语境中:

  • 当 p = 1 时,得到曼哈顿距离。
  • 当 p = 2 时,得到欧氏距离。
  • 当 p → ∞ 时,得到切比雪夫距离。

理解这种关系有助于在具体应用中选择合适的距离度量,因为每种度量强调的点间差异侧重点不同。

Python 与 R 中的切比雪夫距离

为帮助您在项目中实现切比雪夫距离计算,下面展示如何在两种常用编程语言 Python 和 R 中实现。这些示例将演示如何计算二维空间中两点的切比雪夫距离。

Python 示例

Python 可通过 SciPy 库以简洁方式计算切比雪夫距离。方法如下:

from scipy.spatial import distance

# Define points
point_A = (1, 1)
point_B = (4, 5)

# Calculate Chebyshev distance
chebyshev_dist = distance.chebyshev(point_A, point_B)

print(f"The Chebyshev distance between {point_A} and {point_B} is {chebyshev_dist}.")
The Chebyshev distance between (1, 1) and (4, 5) is 4.

在此 Python 示例中,我们使用 SciPy 的 spatial 模块中的 distance.chebyshev() 函数。该函数以两点为参数,返回它们的切比雪夫距离。点以元组表示,便于处理任意维度的坐标。

R 示例

对于 R 用户,我们可以使用 philentropy 包计算切比雪夫距离。方法如下:

# Install and Load the philentropy package
# install.packages("philentropy")
library(philentropy)

# Define points
point_A <- c(1, 1)
point_B <- c(4, 5)

# Bind points into a matrix
points_matrix <- rbind(point_A, point_B)

# Calculate Chebyshev distance
chebyshev_dist <- distance(points_matrix, method = "chebyshev")

# Print the result
print(paste("The Chebyshev distance between points is:", chebyshev_dist))
The Chebyshev distance between points is: 4

在此 R 示例中,我们首先加载 philentropy 包。将两点定义为向量后再堆叠为矩阵。随后使用 philentropy 的 distance() 函数计算切比雪夫距离;只需在 method 参数中指定 chebyshev 即可。

这些代码片段为您在数据科学或机器学习项目中实现切比雪夫距离计算提供了实用的起点。

结论

在整篇文章中,我们探讨了切比雪夫距离及其在度量空间关系方面提供的独特视角。其能够捕捉任一维度上的最大差异,使之特别适用于在任意方向移动同样容易或成本相当的场景,例如机器人、仓储物流与棋类算法。

当您继续探索空间度量与数据分析时,请记住,切比雪夫距离为审视和解决复杂空间问题提供了独特的视角。欢迎进一步了解我们的 Machine Learning in Production 技能路径,帮助您在理论理解与机器学习模型的实际落地之间搭建桥梁,包括在生产环境中应用距离度量。对于希望验证相关专业能力的读者,Data Scientist Certification 提供权威认证,证明您在关键数据科学技能上的熟练度,包括不同距离度量及其应用。

Vinod Chugani

作者

Vinod Chugani

Vinod Chugani 的职业生涯始于东京,曾任摩根大通最年轻的对冲基金销售台负责人,随后在雷曼兄弟创下个人销售纪录,之后又打造了覆盖 30 个国家的电子分销业务,营收突破 1 亿新元,随后转向数据领域。他毕业于杜克大学经济学专业,亦为 NYC Data Science Academy 校友,并在 100 多名申请者中成为Hugo Bowne-Anderson 在 Maven 开设的 “Building AI Applications” 课程的三位奖学金获得者之一。目前,他为 DataCamp、KDnuggets、Machine Learning Mastery 和 Statology 撰稿,内容涵盖从统计学到代理式 AI 等主题,并在 NYC Data Science Academy 指导数据从业者,已完成超过 1,000 场一对一辅导。

 

常见问题

切比雪夫距离与欧氏距离有何不同?

切比雪夫距离度量任一单一维度上的最大差异,而欧氏距离计算两点之间的直线距离。在二维平面上,切比雪夫距离围绕一点形成正方形,而欧氏距离形成圆形。

切比雪夫距离是否总是大于曼哈顿距离?

不,切比雪夫距离并不总是大于曼哈顿距离。切比雪夫距离将小于或等于曼哈顿距离,因为它取的是任一维度上的最大差,而曼哈顿距离是对所有维度的差求和。

切比雪夫距离对特征尺度是否敏感?

是的,切比雪夫距离对特征尺度敏感。如果特征的量纲不同,在计算切比雪夫距离之前对数据进行归一化或标准化非常重要,以确保各维度之间的公平比较。

在高维空间中,切比雪夫距离与其他距离度量相比表现如何?

在高维空间中,切比雪夫距离有时比欧氏距离等其他度量表现更好。它较少受到“维度灾难”的影响,因为它只考虑任一单一维度上的最大差,而不是合并所有维度的差异。

使用切比雪夫距离时面临哪些挑战?

其对最大维度差的敏感性在存在离群点或极端值时,可能导致偏斜的感知,从而在距离计算中占主导地位。

切比雪夫距离在机器学习中用于什么?

切比雪夫距离用于聚类算法和分类任务中,当任一单一维度上的最大差异对区分数据点至关重要时尤为适用。

主题