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

本文由「大千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技术!

相关推荐
weixin1997010801641 分钟前
新京报 item_get - 获取详情数据接口对接全攻略:从入门到精通
大数据·人工智能
老贾专利烩41 分钟前
听力障碍市场规模扩容驱动因素:人口老龄化与技术进步量化分析
人工智能
TMT星球42 分钟前
曹操出行携手越疆科技共同拓展机器人技术的应用场景和应用能力
人工智能·科技·机器人
Lethehong42 分钟前
魔珐星云:让AI拥有身体,开启具身智能新纪元
人工智能·蓝耘元生代·蓝耘maas·魔珐星云
牛客企业服务1 小时前
2025年AI面试趋势解析:企业如何借力工具破解规模化招聘难题?
人工智能·面试·职场和发展
补三补四1 小时前
参数优化—序列神经网络
人工智能·深度学习·神经网络
天地沧海1 小时前
各种和数据分析相关python库的介绍
python·数据挖掘·数据分析
泰迪智能科技011 小时前
企业数据挖掘平台怎么选择,有哪些应用场景?
人工智能·数据挖掘
youcans_1 小时前
【youcans论文精读】U-Net:用于医学图像分割的 U型卷积神经网络
论文阅读·人工智能·计算机视觉·图像分割·unet