搜索
首页科技周边人工智能十个机器学习中常用的距离度量方法

距离度量是有监督和无监督学习算法的基础,包括k近邻、支持向量机和k均值聚类等。

距离度量的选择影响我们的机器学习结果,因此考虑哪种度量最适合这个问题是很重要的。因此,我们在决定使用哪种测量方法时应该谨慎。但在做出决定之前,我们需要了解距离测量是如何工作的,以及我们可以从哪些测量中进行选择。

本文将简要介绍常用的距离度量方法、它们的工作原理、如何用Python计算它们以及何时使用它们。这样可以加深知识和理解,提高机器学习算法和结果。

十个机器学习中常用的距离度量方法

在更深入地研究不同的距离测量之前,我们先要有一个关于它们如何工作以及如何选择合适的测量的大致概念。

距离度量用于计算给定问题空间中两个对象之间的差异,即数据集中的特征。然后可以使用该距离来确定特征之间的相似性, 距离越小特征越相似。

对于距离的度量,我们可以在几何距离测量和统计距离测量之间进行选择,应该选择哪种距离度量取决于数据的类型。特征可能有不同的数据类型(例如,真实值、布尔值、分类值),数据可能是多维的或由地理空间数据组成。

几何距离测量

1、欧氏距离 Euclidean distance

欧氏距离度量两个实值向量之间的最短距离。由于其直观,使用简单和对许多用例有良好结果,所以它是最常用的距离度量和许多应用程序的默认距离度量。

十个机器学习中常用的距离度量方法

欧氏距离也可称为l2范数,其计算方法为:

十个机器学习中常用的距离度量方法

Python代码如下

from scipy.spatial import distance
 distance.euclidean(vector_1, vector_2)

欧氏距离有两个主要缺点。首先,距离测量不适用于比2D或3D空间更高维度的数据。第二,如果我们不将特征规范化和/或标准化,距离可能会因为单位的不同而倾斜。

2、曼哈顿距离 Manhattan distance

曼哈顿距离也被称为出租车或城市街区距离,因为两个实值向量之间的距离是根据一个人只能以直角移动计算的。这种距离度量通常用于离散和二元属性,这样可以获得真实的路径。

十个机器学习中常用的距离度量方法

曼哈顿距离以l1范数为基础,计算公式为:

十个机器学习中常用的距离度量方法

Python代码如下

from scipy.spatial import distance
 distance.cityblock(vector_1, vector_2)

曼哈顿的距离有两个主要的缺点。它不如高维空间中的欧氏距离直观,它也没有显示可能的最短路径。虽然这可能没有问题,但我们应该意识到这并不是最短的距离。

3、切比雪夫距离 Chebyshev distance

切比雪夫距离也称为棋盘距离,因为它是两个实值向量之间任意维度上的最大距离。它通常用于仓库物流中,其中最长的路径决定了从一个点到另一个点所需的时间。

十个机器学习中常用的距离度量方法

切比雪夫距离由l -无穷范数计算:

十个机器学习中常用的距离度量方法

Python代码如下

from scipy.spatial import distance
 distance.chebyshev(vector_1, vector_2)

切比雪夫距离只有非常特定的用例,因此很少使用。

4、闵可夫斯基距离 Minkowski distance

闵可夫斯基距离是上述距离度量的广义形式。它可以用于相同的用例,同时提供高灵活性。我们可以选择 p 值来找到最合适的距离度量。

十个机器学习中常用的距离度量方法

闵可夫斯基距离的计算方法为:

十个机器学习中常用的距离度量方法

Python代码如下

from scipy.spatial import distance
 distance.minkowski(vector_1, vector_2, p)

由于闵可夫斯基距离表示不同的距离度量,它就有与它们相同的主要缺点,例如在高维空间的问题和对特征单位的依赖。此外,p值的灵活性也可能是一个缺点,因为它可能降低计算效率,因为找到正确的p值需要进行多次计算。

5、余弦相似度和距离 Cosine similarity

余弦相似度是方向的度量,他的大小由两个向量之间的余弦决定,并且忽略了向量的大小。余弦相似度通常用于与数据大小无关紧要的高维,例如,推荐系统或文本分析。

十个机器学习中常用的距离度量方法

余弦相似度可以介于-1(相反方向)和1(相同方向)之间,计算方法为:

十个机器学习中常用的距离度量方法

余弦相似度常用于范围在0到1之间的正空间中。余弦距离就是用1减去余弦相似度,位于0(相似值)和1(不同值)之间。

Python代码如下

from scipy.spatial import distance
 distance.cosine(vector_1, vector_2)

余弦距离的主要缺点是它不考虑大小而只考虑向量的方向。因此,没有充分考虑到值的差异。

6、半正矢距离 Haversine distance

半正矢距离测量的是球面上两点之间的最短距离。因此常用于导航,其中经度和纬度和曲率对计算都有影响。

十个机器学习中常用的距离度量方法

半正矢距离的公式如下:

十个机器学习中常用的距离度量方法

其中r为球面半径,φ和λ为经度和纬度。

Python代码如下

from sklearn.metrics.pairwise import haversine_distances
 haversine_distances([vector_1, vector_2])

半正矢距离的主要缺点是假设是一个球体,而这种情况很少出现。

7、汉明距离

汉明距离衡量两个二进制向量或字符串之间的差异。

十个机器学习中常用的距离度量方法

对向量按元素进行比较,并对差异的数量进行平均。如果两个向量相同,得到的距离是0之间,如果两个向量完全不同,得到的距离是1。

Python代码如下

from scipy.spatial import distance
 distance.hamming(vector_1, vector_2)

汉明距离有两个主要缺点。距离测量只能比较相同长度的向量,它不能给出差异的大小。所以当差异的大小很重要时,不建议使用汉明距离。

统计距离测量

统计距离测量可用于假设检验、拟合优度检验、分类任务或异常值检测。

8、杰卡德指数和距离 Jaccard Index

Jaccard指数用于确定两个样本集之间的相似性。它反映了与整个数据集相比存在多少一对一匹配。Jaccard指数通常用于二进制数据比如图像识别的深度学习模型的预测与标记数据进行比较,或者根据单词的重叠来比较文档中的文本模式。

十个机器学习中常用的距离度量方法

Jaccard距离的计算方法为:

十个机器学习中常用的距离度量方法

Python代码如下

from scipy.spatial import distance
 distance.jaccard(vector_1, vector_2)

Jaccard指数和距离的主要缺点是,它受到数据规模的强烈影响,即每个项目的权重与数据集的规模成反比。

9、Sorensen-Dice指数

Sörensen-Dice指数类似于Jaccard指数,它可以衡量的是样本集的相似性和多样性。该指数更直观,因为它计算重叠的百分比。Sörensen-Dice索引常用于图像分割和文本相似度分析。

十个机器学习中常用的距离度量方法

计算公式如下:

十个机器学习中常用的距离度量方法

Python代码如下

from scipy.spatial import distance
 distance.dice(vector_1, vector_2)

它的主要缺点也是受数据集大小的影响很大。

10、动态时间规整 Dynamic Time Warping

动态时间规整是测量两个不同长度时间序列之间距离的一种重要方法。可以用于所有时间序列数据的用例,如语音识别或异常检测。

十个机器学习中常用的距离度量方法

为什么我们需要一个为时间序列进行距离测量的度量呢?如果时间序列长度不同或失真,则上述面说到的其他距离测量无法确定良好的相似性。比如欧几里得距离计算每个时间步长的两个时间序列之间的距离。但是如果两个时间序列的形状相同但在时间上发生了偏移,那么尽管时间序列非常相似,但欧几里得距离会表现出很大的差异。

动态时间规整通过使用多对一或一对多映射来最小化两个时间序列之间的总距离来避免这个问题。当搜索最佳对齐时,这会产生更直观的相似性度量。通过动态规划找到一条弯曲的路径最小化距离,该路径必须满足以下条件:

  • 边界条件:弯曲路径在两个时间序列的起始点和结束点开始和结束
  • 单调性条件:保持点的时间顺序,避免时间倒流
  • 连续条件:路径转换限制在相邻的时间点上,避免时间跳跃
  • 整经窗口条件(可选):允许的点落入给定宽度的整经窗口
  • 坡度条件(可选):限制弯曲路径坡度,避免极端运动

我们可以使用 Python 中的 fastdtw 包:

from scipy.spatial.distance import euclidean
 from fastdtw import fastdtw
 
 distance, path = fastdtw(timeseries_1, timeseries_2, dist=euclidean)

动态时间规整的一个主要缺点是与其他距离测量方法相比,它的计算工作量相对较高。

总结

在这篇文章中,简要介绍了十种常用的距离测量方法。本文中已经展示了它们是如何工作的,如何在Python中实现它们,以及经常使用它们解决什么问题。如果你认为我错过了一个重要的距离测量,请留言告诉我。

以上是十个机器学习中常用的距离度量方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:51CTO.COM。如有侵权,请联系admin@php.cn删除
拥抱面部是否7B型号奥林匹克赛车击败克劳德3.7?拥抱面部是否7B型号奥林匹克赛车击败克劳德3.7?Apr 23, 2025 am 11:49 AM

拥抱Face的OlympicCoder-7B:强大的开源代码推理模型 开发以代码为中心的语言模型的竞赛正在加剧,拥抱面孔与强大的竞争者一起参加了比赛:OlympicCoder-7B,一种产品

4个新的双子座功能您可以错过4个新的双子座功能您可以错过Apr 23, 2025 am 11:48 AM

你们当中有多少人希望AI可以做更多的事情,而不仅仅是回答问题?我知道我有,最近,我对它的变化感到惊讶。 AI聊天机器人不仅要聊天,还关心创建,研究

Camunda为经纪人AI编排编写了新的分数Camunda为经纪人AI编排编写了新的分数Apr 23, 2025 am 11:46 AM

随着智能AI开始融入企业软件平台和应用程序的各个层面(我们必须强调的是,既有强大的核心工具,也有一些不太可靠的模拟工具),我们需要一套新的基础设施能力来管理这些智能体。 总部位于德国柏林的流程编排公司Camunda认为,它可以帮助智能AI发挥其应有的作用,并与新的数字工作场所中的准确业务目标和规则保持一致。该公司目前提供智能编排功能,旨在帮助组织建模、部署和管理AI智能体。 从实际的软件工程角度来看,这意味着什么? 确定性与非确定性流程的融合 该公司表示,关键在于允许用户(通常是数据科学家、软件

策划的企业AI体验是否有价值?策划的企业AI体验是否有价值?Apr 23, 2025 am 11:45 AM

参加Google Cloud Next '25,我渴望看到Google如何区分其AI产品。 有关代理空间(此处讨论)和客户体验套件(此处讨论)的最新公告很有希望,强调了商业价值

如何为抹布找到最佳的多语言嵌入模型?如何为抹布找到最佳的多语言嵌入模型?Apr 23, 2025 am 11:44 AM

为您的检索增强发电(RAG)系统选择最佳的多语言嵌入模型 在当今的相互联系的世界中,建立有效的多语言AI系统至关重要。 强大的多语言嵌入模型对于RE至关重要

麝香:奥斯汀的机器人需要每10,000英里进行干预麝香:奥斯汀的机器人需要每10,000英里进行干预Apr 23, 2025 am 11:42 AM

特斯拉的Austin Robotaxi发射:仔细观察Musk的主张 埃隆·马斯克(Elon Musk)最近宣布,特斯拉即将在德克萨斯州奥斯汀推出的Robotaxi发射,最初出于安全原因部署了一支小型10-20辆汽车,并有快速扩张的计划。 h

AI震惊的枢轴:从工作工具到数字治疗师和生活教练AI震惊的枢轴:从工作工具到数字治疗师和生活教练Apr 23, 2025 am 11:41 AM

人工智能的应用方式可能出乎意料。最初,我们很多人可能认为它主要用于代劳创意和技术任务,例如编写代码和创作内容。 然而,哈佛商业评论最近报道的一项调查表明情况并非如此。大多数用户寻求人工智能的并非是代劳工作,而是支持、组织,甚至是友谊! 报告称,人工智能应用案例的首位是治疗和陪伴。这表明其全天候可用性以及提供匿名、诚实建议和反馈的能力非常有价值。 另一方面,营销任务(例如撰写博客、创建社交媒体帖子或广告文案)在流行用途列表中的排名要低得多。 这是为什么呢?让我们看看研究结果及其对我们人类如何继续将

公司竞争AI代理的采用公司竞争AI代理的采用Apr 23, 2025 am 11:40 AM

AI代理商的兴起正在改变业务格局。 与云革命相比,预计AI代理的影响呈指数增长,有望彻底改变知识工作。 模拟人类决策的能力

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境