曼哈顿距离:概念、起源与应用全解析

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!
在曼哈顿的网格状街道上,出租车无法直线穿越高楼大厦,只能沿着街道直角转弯行驶------这种现实场景催生了一种独特的距离度量方式,如今已成为机器学习、数据分析和计算机科学中不可或缺的工具。

曼哈顿距离(Manhattan Distance),又称出租车距离城市街区距离 ,是指在规则网格中两点间沿坐标轴方向行走的最短路径长度 。其核心定义为:在n维空间中,两点间的曼哈顿距离是它们各坐标数值差绝对值的总和

作为闵可夫斯基距离(Minkowski Distance) 家族中p=1的特例,曼哈顿距离与常见的欧氏距离(直线距离) 形成鲜明对比,为我们提供了另一种衡量数据点相似性或差异性的视角。

🔍 基本概念与数学定义

曼哈顿距离的命名来源于纽约曼哈顿网格状街道布局的现实场景。在这个区域,车辆只能沿着垂直或水平的街道行驶,无法直接斜穿建筑区块。

数学表达式 如下:

对于二维空间中的两点A(x₁, y₁)和B(x₂, y₂),曼哈顿距离为:

复制代码
d(A,B) = | x₁ - x₂ | + | y₁ - y₂ |

对于n维空间中的两点P(p₁, p₂, ..., pₙ)和Q(q₁, q₂, ..., qₙ),曼哈顿距离的一般形式为:

复制代码
d(P,Q) = Σ | pᵢ - qᵢ | (i=1到n)

曼哈顿距离满足距离度量的四个基本性质

  • 非负性:d(i,j) ≥ 0
  • 同一性:d(i,i) = 0
  • 对称性:d(i,j) = d(j,i)
  • 三角不等式:d(i,j) ≤ d(i,k) + d(k,j)

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

往期文章推荐:

📜 历史起源与命名由来

曼哈顿距离的概念最早可追溯到19世纪赫尔曼·闵可夫斯基 的研究工作,他创立了这种几何度量空间中的概念。然而,"曼哈顿距离"这一具体名称的起源则与20世纪60年代的计算机科学研究密切相关。

根据历史研究,术语"曼哈顿距离"最早出现在1962年的计算机科学文献 中。Harvey L. Garner和Jon S. Squire在论文《迭代电路计算机》("Iterative Circuit Computers")中使用了这一术语,且未作特别解释 ,表明当时它已经是该领域的常用概念

同年,Rodolfo Gonzales和Sandra Palais在《迭代电路计算机的路径构建程序》("A Path-Building Procedure for Iterative Circuit Computers")中明确定义了这一概念:

"这种测量距离的方法被称为'曼哈顿距离'。"

这一名称的直观性使其迅速传播开来------正如在曼哈顿的街道网格中,两点间的最短路径是沿垂直和水平方向移动的距离总和,而不是直线距离。

🔄 曼哈顿距离与欧氏距离的比较

曼哈顿距离和欧氏距离是两种最常用的距离度量方法,它们在数学特性和应用场景上有显著差异。

特性 曼哈顿距离(L1距离) 欧氏距离(L2距离)
数学定义 坐标差绝对值的和 坐标差平方和的平方根
几何意义 网格路径长度 直线距离
计算复杂度 低(仅加减法和绝对值) 较高(需要平方和开方)
对异常值的敏感性 较低 较高
适用场景 网格状路径、特征独立 连续空间、物理距离

如图所示,红色、蓝色和黄色线 表示的曼哈顿距离长度相同(均为12个单位),而绿色线表示的欧氏距离则短得多(约为8.48个单位)。这种差异直观展示了两种距离度量的本质区别。

在机器学习中,这种差异直接影响算法性能。例如,在K-最近邻(K-NN)K-均值聚类 算法中,选择不同的距离度量可能导致完全不同的结果

💻 Python实现与示例

下面通过Python示例展示曼哈顿距离的计算方法及其实际应用。我们将使用NumPy和SciPy这两个数据科学领域最常用的库。

基础计算方法

python 复制代码
import numpy as np
from scipy.spatial.distance import cityblock

# 定义两个二维点
point_a = np.array([2, 3])
point_b = np.array([5, 7])

# 方法1:手动计算曼哈顿距离
def manhattan_distance_manual(p1, p2):
    return np.sum(np.abs(p1 - p2))

# 方法2:使用SciPy的cityblock函数(专门计算曼哈顿距离)
manhattan_dist_scipy = cityblock(point_a, point_b)

print(f"点A: {point_a}, 点B: {point_b}")
print(f"手动计算曼哈顿距离: {manhattan_distance_manual(point_a, point_b)}")
print(f"SciPy计算曼哈顿距离: {manhattan_dist_scipy}")

🧠 在机器学习与数据科学中的应用

1. 特征选择与数据预处理

曼哈顿距离在高维数据分析 中表现优异,特别是当特征之间存在独立性假设 时。与欧氏距离相比,它对异常值不那么敏感,这在现实数据集中尤为重要。

2. 聚类分析

K-均值聚类 等算法中,曼哈顿距离可以帮助发现网格状或轴对齐的簇结构 。当数据在特征空间中沿坐标轴方向分布时,使用曼哈顿距离通常能获得更合理的聚类结果

3. 推荐系统

基于协同过滤 的推荐系统中,曼哈顿距离可用于衡量用户偏好向量之间的相似性。当评价维度(如电影评分)相对独立时,这种距离度量特别有效。

4. 图像处理与计算机视觉

早期计算机图形学 中,屏幕像素坐标均为整数,曼哈顿距离只需整数加减运算,避免了浮点运算的开销和误差,显著提高了处理速度。

5. 自然语言处理

文本分类文档相似度计算 中,当使用词袋模型表示文本时,曼哈顿距离可以作为文档向量之间的一种差异度量方式。

💡 实践建议与选择指南

在实际项目中选择距离度量时,考虑以下因素:

  1. 数据特性:如果数据在网格状结构中或特征相对独立,曼哈顿距离可能是更好的选择。

  2. 计算效率:对于需要高效计算的大规模数据集,曼哈顿距离的计算优势明显。

  3. 异常值处理:如果数据包含异常值且不希望它们对距离计算产生过大影响,曼哈顿距离比欧氏距离更合适。

  4. 问题领域 :在棋盘游戏(如国际象棋中车的移动)、城市导航等具有网格约束的领域,曼哈顿距离具有天然优势。

  5. 算法需求 :某些算法(如LASSO回归)本质上基于L1范式,与曼哈顿距离有深刻的数学联系。

总结

曼哈顿距离作为一种直观而强大的距离度量工具,从曼哈顿的街道网格出发,已发展成为机器学习和数据科学中的重要基石 。其计算简单性、对异常值的鲁棒性以及在网格状结构中的天然适用性,使其在许多应用场景中成为比欧氏距离更合适的选择

随着数据科学领域的不断发展,曼哈顿距离及其变体将继续在新的应用场景中发挥重要作用,特别是在高维数据稀疏特征计算受限环境 中。理解这一基本概念及其与欧氏距离的根本区别,是每位数据科学家和机器学习实践者的必备知识

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

相关推荐
aaaa_a1335 小时前
李宏毅:AI AGENT
人工智能
UWA5 小时前
GPM 2.0全新功能发布|GPU精准监测 + 精细化运营,重构游戏性能管控新范式
人工智能·游戏·性能优化·重构·游戏开发·uwa
无心水5 小时前
【Stable Diffusion 3.5 FP8】1、Stable Diffusion 3.5 FP8 入门指南:为什么它能颠覆文生图效率?
人工智能·python·深度学习·机器学习·stable diffusion·ai镜像开发·ai镜像
Elastic 中国社区官方博客5 小时前
Elasticsearch:使用 ES|QL 与 dense_vector 字段
大数据·数据库·人工智能·sql·elasticsearch·搜索引擎·全文检索
沉木渡香5 小时前
AI驱动:我的系统化探索与成长之年(2025)
人工智能·年终总结·2025·ai驱动
OpenCSG5 小时前
高性能 · 低门槛| i20 & RTX 4090 正式上线 OpenCSG 社区与三峡传神社区!
人工智能·opencsg
IT_陈寒5 小时前
Redis性能提升50%的7个实战技巧,连官方文档都没讲全!
前端·人工智能·后端
小女孩真可爱5 小时前
大模型学习记录(九)-------Agent
人工智能·pytorch·深度学习·学习·大模型
natide5 小时前
词汇/表达差异-6-n-gram分布距离
人工智能·python·算法
偶信科技5 小时前
自容式水听器是什么?偶信科技为您解答
人工智能·科技·偶信科技·ocean·自容式水听器·海洋仪器·海洋设备