常见的几种距离量度(欧式距离、曼哈顿距离、切比雪夫距离等)

简介: 在机器学习和数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。本文介绍几种常用的距离量度方法。

在机器学习和数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。本文介绍几种常用的距离量度方法。

一、欧氏距离(Euclidean Distance)

在这里插入图片描述
我们从最常见的欧式距离开始,欧式距离可解释为连接两个点的线段的长度。欧式距离公式非常简单,使用勾股定理从这些点的笛卡尔坐标计算距离。

$$ D(x,y)=\sqrt {\displaystyle \sum^{n}_{i=1}(x_i-y_i)^2} $$

缺点:尽管这是一种常用的距离度量,但欧式距离并不是尺度不变的,这意味着所计算的距离可能会根据特征的单位发生倾斜。通常,在使用欧式距离度量之前,需要对数据进行归一化处理

此外,随着数据维数的增加,欧氏距离的作用也就越小。这与维数灾难(curse of dimensionality)有关。

用例:当你拥有低维数据且向量的大小非常重要时,欧式距离的效果非常好。如果在低维数据上使用欧式距离,则如 K-NN 和 HDBSCAN 之类的方法可达到开箱即用的效果。

二、曼哈顿距离(Manhattan Distance)

在这里插入图片描述
曼哈顿距离通常称为出租车距离城市街区距离,用来计算实值向量之间的距离。想象一下均匀网格棋盘上的物体,如果它们只能移动直角,曼哈顿距离是指两个向量之间的距离,在计算距离时不涉及对角线移动。

$$ D(x,y)= \displaystyle \sum^{k}_{i=1}|x_i-y_i| $$
缺点:尽管曼哈顿距离在高维数据中似乎可以工作,但它比欧式距离直观性差,尤其是在高维数据中使用时。此外,由于它可能不是最短路径,有可能比欧氏距离给出一个更高的距离值。

用例:当数据集具有离散或二进制属性时,曼哈顿距离似乎工作得很好,因为它考虑了在这些属性的值中实际可以采用的路径。以欧式距离为例,它会在两个向量之间形成一条直线,但实际上这是不可能的。

三、切比雪夫距离(Chebyshev Distance)

在这里插入图片描述
切比雪夫距离定义为两个向量在任意坐标维度上的最大差值。换句话说,它就是沿着一个轴的最大距离。切比雪夫距离通常被称为棋盘距离,因为国际象棋的国王从一个方格到另一个方格的最小步数等于切比雪夫距离。
$$ D(x,y)= max_i(|x_i-y_i|) $$
缺点:切比雪夫距离通常用于特定的用例,这使得它很难像欧氏距离或余弦相似度那样作为通用的距离度量。因此,在确定适合用例时才使用它。

用例:切比雪夫距离用于提取从一个方块移动到另一个方块所需的最小移动次数。此外,在允许无限制八向移动的游戏中,这可能是有用的方法。在实践中,切比雪夫距离经常用于仓库物流,因为它非常类似于起重机移动一个物体的时间。

四、余弦相似度(Cosine Similarity)

在这里插入图片描述
余弦相似度经常被用作抵消高维欧式距离问题。余弦相似度是指两个向量夹角的余弦。如果将向量归一化为长度均为 1 的向量,则向量的点积也相同。

两个方向完全相同的向量的余弦相似度为 1,而两个彼此相对的向量的余弦相似度为 - 1。注意,它们的大小并不重要,因为这是在方向上的度量。

$$ D(x,y)=cos(\theta)=\frac{x·y}{||x||y||} $$
缺点:余弦相似度的一个主要缺点是没有考虑向量的大小,而只考虑它们的方向。以推荐系统为例,余弦相似度就没有考虑到不同用户之间评分尺度的差异。

用例:当我们对高维数据向量的大小不关注时,可以使用余弦相似度。对于文本分析,当数据以单词计数表示时,经常使用此度量。例如,当一个单词在一个文档中比另一个单词更频繁出现时,这并不一定意味着文档与该单词更相关。可能是文件长度不均匀或者计数的重要性不太重要。我们最好使用忽略幅度的余弦相似度。

这里博主暂时就总结以上四种常用的,如果想要了解更多,可以参考原文:9 Distance Measures in Data Science

相关文章
|
机器学习/深度学习 传感器 编解码
Real-ESRGAN超分辨网络
Real-ESRGAN超分辨网络
1296 1
|
Linux 网络安全 数据安全/隐私保护
FileZilla 将本地文件上传到linux目录
FileZilla 将本地文件上传到linux目录
581 0
|
3月前
|
机器学习/深度学习 自然语言处理 API
Qwen3.5:迈向原生多模态智能体
除夕夜,通义千问发布Qwen3.5-397B-A17B:全球首个原生多模态MoE大模型,总参3970亿、仅激活170亿参数,性能媲美万亿模型;支持201种语言、超强视觉理解与GUI智能体能力,已开源至GitHub与ModelScope。
4104 4
Qwen3.5:迈向原生多模态智能体
fastadmin实现导出Excel和导入Excel数据
fastadmin实现导出Excel和导入Excel数据
1263 0
|
7月前
|
计算机视觉
MATLAB实现图像分割:Otsu阈值法
Otsu方法(大津法)是一种广泛使用的自动图像阈值分割技术,它通过最大化类间方差来确定最佳阈值。
|
缓存 Ubuntu Linux
Docker Buildx 简介与安装指南
Docker Buildx 是一个强大的工具,提供了多架构构建、并行构建和高级缓存管理等功能。通过正确安装和配置 Buildx,可以显著提升 Docker 镜像的构建效率和灵活性。希望本文能帮助你更好地理解和使用 Docker Buildx,以提高开发和部署的效率。
6798 16
|
机器学习/深度学习 人工智能 自然语言处理
揭秘未来:量子计算与人工智能的融合之路
本文旨在探讨量子计算和人工智能(AI)的结合前景及其对科技领域的潜在影响。通过分析当前技术发展态势,揭示两者融合所带来的创新机遇与挑战,并预测其对未来社会变革的可能贡献。文章将深入剖析量子计算在解决复杂问题方面的优势,以及AI在模式识别和数据分析方面的专长,进而展望两者结合在未来技术革新中的关键作用。
|
Java Linux Windows
java系列之 复制原始目录文件到新的 目录文件【Windows 和 Linux 均可使用】
这篇文章提供了Java中复制或移动目录及其文件(包括权限)的示例代码,包括删除目标目录内容、复制或移动整个目录的过程,并强调了在操作过程中需要注意的一些关键点。
|
机器学习/深度学习 传感器 算法
【机器学习】在聚类算法中,使用曼哈顿距离和使用欧式距离有什么区别?
【5月更文挑战第12天】【机器学习】在聚类算法中,使用曼哈顿距离和使用欧式距离有什么区别?
|
JavaScript 前端开发 开发者
如果你想在钉钉环境中运行JavaScript脚本
【2月更文挑战第17天】如果你想在钉钉环境中运行JavaScript脚本
583 6