机器学习中的三大距离度量:欧式距离、曼哈顿距离、切比雪夫距离详解

【个人主页:玄同765

大语言模型(LLM)开发工程师中国传媒大学·数字媒体技术(智能交互与游戏设计)

**深耕领域:**大语言模型开发 / RAG知识库 / AI Agent落地 / 模型微调

**技术栈:**Python / LangChain/RAG(Dify+Redis+Milvus)| SQL/NumPy | FastAPI+Docker ️

**工程能力:**专注模型工程化部署、知识库构建与优化,擅长全流程解决方案

「让AI交互更智能,让技术落地更高效」

欢迎技术探讨/项目合作! 关注我,解锁大模型与智能交互的无限可能!

摘要

在机器学习、数据挖掘和计算机视觉中,距离度量是一个核心概念 ------ 它用于衡量两个数据点之间的相似性或差异性,是聚类、分类、推荐系统等算法的基础。本文从数学定义、几何意义、适用场景、代码实现4 个维度,详细讲解欧式距离、曼哈顿距离、切比雪夫距离这三大常用距离度量,帮助开发者理解它们的本质差异,在实际项目中选择合适的距离度量方法。


一、距离度量的核心价值:为什么需要距离?

在机器学习中,距离度量的作用主要体现在 3 个方面:

  1. 相似性判断:距离越小,两个数据点越相似;距离越大,差异性越大;
  2. 聚类与分类:K-Means、DBSCAN 等聚类算法,SVM、KNN 等分类算法,都依赖距离度量来划分数据簇或判断类别;
  3. 特征工程:在降维(如 PCA)、特征选择中,距离度量用于评估特征的重要性;
  4. 推荐系统:基于用户行为数据的协同过滤,通过计算用户或物品之间的距离,实现个性化推荐。

二、欧式距离(Euclidean Distance):最直观的 "直线距离"

2.1 数学定义

欧式距离是最常用的距离度量,它表示 n 维空间中两个点之间的直线距离,公式为:

d(x,y)=∑i=1n​(xi​−yi​)2​

其中,x=(x1​,x2​,...,xn​)和y=(y1​,y2​,...,yn​)是 n 维空间中的两个点。

2.2 几何意义

在二维空间中,欧式距离就是两点之间的直线距离(勾股定理);在三维空间中,是两点之间的空间直线距离。

示例:二维空间中,点 A (1,2) 和点 B (4,6) 的欧式距离为:

d(A,B)=(4−1)2+(6−2)2​=9+16​=5

2.3 适用场景
  • 连续型数据:适合处理连续型特征(如身高、体重、房价等);
  • 低维数据:在低维空间中,欧式距离能准确反映数据点的相似性;
  • 计算机视觉:用于图像特征匹配、目标检测(如计算两个特征向量的距离)。
2.4 代码实现
复制代码
import numpy as np

def euclidean_distance(x, y):
    """
    计算欧式距离
    :param x: 第一个点的特征向量
    :param y: 第二个点的特征向量
    :return: 欧式距离
    """
    return np.sqrt(np.sum((x - y) ** 2))

# 示例
x = np.array([1, 2])
y = np.array([4, 6])
print(euclidean_distance(x, y))  # 输出:5.0
2.5 优缺点
  • 优点:直观易懂,计算简单,在低维空间中准确性高;
  • 缺点
    1. 对高维数据不友好:随着维度增加,欧式距离的区分度会下降("维度灾难");
    2. 对异常值敏感:异常值会显著影响距离计算结果;
    3. 未考虑特征权重:默认所有特征的权重相同,实际场景中可能需要加权处理。

三、曼哈顿距离(Manhattan Distance):"城市街区距离"

3.1 数学定义

曼哈顿距离(又称 "出租车距离")表示 n 维空间中两个点之间的绝对距离之和,公式为:

d(x,y)=∑i=1n​∣xi​−yi​∣

3.2 几何意义

在二维空间中,曼哈顿距离是两点之间沿坐标轴方向的距离之和,类似于城市中出租车沿街道行驶的路径长度。

示例:二维空间中,点 A (1,2) 和点 B (4,6) 的曼哈顿距离为:

d(A,B)=∣4−1∣+∣6−2∣=3+4=7

3.3 适用场景
  • 离散型数据:适合处理离散型特征(如分类变量、计数数据);
  • 高维数据:相比欧式距离,在高维空间中更稳定;
  • 路径规划:在机器人导航、物流配送中,用于计算最短路径;
  • 推荐系统:基于用户评分的协同过滤,曼哈顿距离对评分差异的敏感度更低。
3.4 代码实现
复制代码
import numpy as np

def manhattan_distance(x, y):
    """
    计算曼哈顿距离
    :param x: 第一个点的特征向量
    :param y: 第二个点的特征向量
    :return: 曼哈顿距离
    """
    return np.sum(np.abs(x - y))

# 示例
x = np.array([1, 2])
y = np.array([4, 6])
print(manhattan_distance(x, y))  # 输出:7.0
3.5 优缺点
  • 优点
    1. 对高维数据更稳定,不易受维度灾难影响;
    2. 对异常值的敏感度低于欧式距离;
    3. 计算速度更快(无需开平方);
  • 缺点
    1. 未考虑特征权重;
    2. 在低维空间中,不如欧式距离直观。

四、切比雪夫距离(Chebyshev Distance):"棋盘距离"

4.1 数学定义

切比雪夫距离表示 n 维空间中两个点之间的最大绝对差,公式为:

d(x,y)=maxi=1,...,n​∣xi​−yi​∣

4.2 几何意义

在二维空间中,切比雪夫距离是两点之间沿坐标轴方向的最大距离,类似于国际象棋中 "王" 的移动距离(可以沿任意方向走一步)。

示例:二维空间中,点 A (1,2) 和点 B (4,6) 的切比雪夫距离为:

d(A,B)=max(∣4−1∣,∣6−2∣)=max(3,4)=4

4.3 适用场景
  • 多维度数据的最大差异:适合需要关注最大差异的场景(如供应链中,多个环节的最大延迟);
  • 棋盘类问题:在机器人导航、游戏 AI 中,用于计算最短路径;
  • 图像分割:用于计算像素点之间的最大颜色差异。
4.4 代码实现
复制代码
import numpy as np

def chebyshev_distance(x, y):
    """
    计算切比雪夫距离
    :param x: 第一个点的特征向量
    :param y: 第二个点的特征向量
    :return: 切比雪夫距离
    """
    return np.max(np.abs(x - y))

# 示例
x = np.array([1, 2])
y = np.array([4, 6])
print(chebyshev_distance(x, y))  # 输出:4.0
4.5 优缺点
  • 优点
    1. 关注最大差异,适合需要突出极端值的场景;
    2. 计算简单,速度快;
  • 缺点
    1. 忽略了其他维度的差异,可能导致信息丢失;
    2. 适用场景相对有限。

五、三大距离度量的对比与选择

距离类型 数学定义 适用场景 优点 缺点
欧式距离 直线距离(平方和开根号) 连续型数据、低维数据、CV 直观易懂,准确性高 高维数据不稳定,对异常值敏感
曼哈顿距离 绝对距离之和 离散型数据、高维数据、路径规划 高维稳定,对异常值不敏感 低维场景不如欧式直观
切比雪夫距离 最大绝对差 最大差异场景、棋盘类问题 关注极端值,计算简单 忽略其他维度差异
5.1 选择建议
  1. 根据数据类型选择
    • 连续型数据优先选欧式距离;
    • 离散型数据优先选曼哈顿距离;
    • 需要关注最大差异时选切比雪夫距离;
  2. 根据数据维度选择
    • 低维数据选欧式距离;
    • 高维数据选曼哈顿距离;
  3. 根据业务需求选择
    • 推荐系统中,用户评分数据适合曼哈顿距离;
    • 计算机视觉中,特征匹配适合欧式距离;
    • 供应链中,延迟分析适合切比雪夫距离。

六、扩展:加权距离与余弦相似度

在实际项目中,我们还可以对距离度量进行扩展:

  1. 加权距离:为不同特征赋予不同权重,解决默认权重相同的问题,如加权欧式距离:d(x,y)=∑i=1nwi(xi−yi)2其中,wi是第 i 个特征的权重;
  2. 余弦相似度:用于衡量两个向量的方向相似性,适合文本分类、推荐系统等场景:cos(θ)=∣∣x∣∣∣∣y∣∣x⋅y余弦相似度的取值范围为 [-1,1],值越接近 1 表示方向越相似。

七、总结

欧式距离、曼哈顿距离、切比雪夫距离是机器学习中最常用的三大距离度量,它们各有优缺点和适用场景。理解它们的数学定义、几何意义和适用场景,是选择合适距离度量的基础。在实际项目中,我们可以根据数据类型、维度和业务需求,选择合适的距离度量,也可以结合加权、余弦相似度等扩展方法,进一步优化距离计算的准确性。

通过本文的详细讲解,你可以快速掌握三大距离度量的核心知识,并在实际项目中灵活应用,提高机器学习模型的性能和效果。

相关推荐
第七序章6 小时前
【Linux学习笔记】初识Linux —— 理解gcc编译器
linux·运维·服务器·开发语言·人工智能·笔记·学习
格林威6 小时前
Baumer相机水果表皮瘀伤识别:实现无损品质分级的 7 个核心方法,附 OpenCV+Halcon 实战代码!
人工智能·opencv·计算机视觉·视觉检测·工业相机·sdk开发·堡盟相机
rainbow7242446 小时前
AI证书选型深度分析:如何根据职业目标评估其真正价值
人工智能·机器学习
AI科技星6 小时前
从ZUFT光速螺旋运动求导推出自然常数e
服务器·人工智能·线性代数·算法·矩阵
love530love6 小时前
Windows 下 GCC 编译器安装与排错实录
人工智能·windows·python·gcc·msys2·gtk·msys2 mingw 64
倔强的石头1066 小时前
归纳偏好 —— 机器学习的 “择偶标准”
人工智能·机器学习
zhangshuang-peta6 小时前
通过MCP实现安全的多渠道人工智能集成
人工智能·ai agent·mcp·peta
听麟6 小时前
HarmonyOS 6.0+ APP AR文旅导览系统开发实战:空间定位与文物交互落地
人工智能·深度学习·华为·ar·wpf·harmonyos
AI_56786 小时前
阿里云OSS成本优化:生命周期规则+分层存储省70%
运维·数据库·人工智能·ai