楼主: 时光人
2799 1

数据科学中 17 种相似性和相异性度量 [推广有奖]

  • 3关注
  • 34粉丝

已卖:165份资源

院士

23%

还不是VIP/贵宾

-

威望
1
论坛币
26913 个
通用积分
429.8724
学术水平
95 点
热心指数
109 点
信用等级
91 点
经验
39970 点
帖子
1630
精华
3
在线时间
580 小时
注册时间
2019-2-25
最后登录
2025-5-6

楼主
时光人 学生认证  发表于 2022-2-17 17:06:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
本文解释了计算距离的各种方法,并展示了它们在我们日常生活中的实例。限于篇幅,便于阅读,将本文分为上下两篇,希望对你有所帮助。题库

"There is no Royal Road to Geometry."—欧几里得

8029840b8d3e6f1b801f15de98c1a060.png

简介
相似性和相异性
在数据科学中,相似性度量是一种度量数据样本之间相互关联或紧密程度的方法。相异性度量是说明数据对象的不同程度。

相异性度量和相似性度量通常用于聚类,相似的数据样本被分组为一个聚类,所有其他数据样本被分组到其他不同的聚类中心中。它们还用于分类(例如 KNN),它是根据特征的相似性标记数据对象。另外还用于寻找与其他数据样本相比不同的异常值(例如异常检测)。

相似性度量通常表示为数值:当数据样本越相似时,它越高。通常通过转换表示为零和一之间的数字:零表示低相似性(数据对象不相似)。一是高相似度(数据对象非常相似)。

举一个例子,有三个数据点 A、B 和 C ,每个数据点只包含一个输入特征。每个数据样本在一个轴上可以有一个值(因为只有一个输入特征),将其表示为 x 轴。并取两个点,A(0.5)、B(1) 和 C(30),A 和 B 与 C 相比彼此足够接近,因此,A 和 B 之间的相似度高于 A 和 C 或 B 和 C。换句话说,A 和 B 具有很强的相关性。因此,距离越小,相似度就会越大。可以认为这是展示三个数据点 A、B 和 C 之间差异的最简单的例子。

指标
当且仅当满足以下四个条件时,给定的距离(例如相异性)才是度量标准:

1 - 非负性: d(p,q)>=0,对于任何两个不同的观察p和q
2 - 对称性:  d(p,q) = d(q,p)对于所有 p和q 。
3 - 三角不等式:  d(p,q) <=d(p,r)+d(r,q)对于所有 p,q,r。
4 -  d(p,q) = 0仅当p =q  时。

距离度量是分类的基本原则,就像 k-近邻分类器算法一样,它测量给定数据样本之间的差异。此外,选择不同的距离度量会对分类器的性能产生很大影响。因此,计算对象之间距离的方式将对分类器算法的性能起到至关重要的作用。

距离函数
用于测量距离的技术取决于正在处理的特定情况。例如,在某些区域,欧几里得距离可能是最佳的,并且对于计算距离非常有用。其他应用程序需要更复杂的方法来计算点或观测值之间的距离,如余弦距离。以下列举的列表代表了计算每对数据点之间距离的各种方法。

L2范数,欧几里得距离
640.webp (11).jpg

欧几里得轮廓

用于数值属性或特征的最常见距离函数是欧几里得距离,其定义在以下公式中:
n 维空间中两点之间的欧几里德距离

FC379F71-A59C-4113-B5C2-6EC3C34820C3.png

这个距离度量具有众所周知的特性,例如对称、可微、凸面、球面……

在二维空间中,前面的公式可以表示为:
二维空间中两点之间的欧几里德距离。

360FF3EA-A0E3-4f6b-BA8A-610EB4D8DBAC.png

它等于直角三角形斜边的长度。

此外,欧几里得距离是一个度量,因为它满足其标准,如下图所示。

640.webp (12).jpg

欧几里得距离满足成为度量的所有条件

此外,使用该公式计算的距离表示每对点之间的最小距离。换句话说,它是从A点到B点的最短路径(二维笛卡尔坐标系),如下图所示:

640.webp (13).jpg

欧几里得距离是最短路径(不包括量子世界中的虫洞)

因此,当你想在路径上没有障碍物的情况下计算两点之间的距离时,使用此公式很有用。这可以认为是你不想计算欧几里德距离的情况之一;而你希望使用其他指标,例如曼哈顿距离,这将在本文稍后将对此进行解释。

欧氏距离无法为我们提供有用信息的另一种情况是,飞机的飞行路径遵循地球的曲率,而不是直线(除非地球是平的,否则不是)。

但是,解释一下如何在机器学习的中使用欧几里德距离。

最著名的分类算法之一 -- KNN 算法,该算法使用欧几里德距离对数据进行分类。为了演示 KNN 如何使用欧几里德度量,我们选择了一个 Scipy 包的流行 iris 数据集。

该数据集包含三种花:Iris-Setosa、Iris-Versicolor 和 Iris-Virginica,并具有以下四个特征:萼片长度、萼片宽度、花瓣长度、花瓣宽度。因此就有一个 4 维空间,在其中表示每个数据点。

640.webp (14).jpg

两种特征空间中两种花卉的鸢尾花数据集

为了满足简单和演示目的,我们只选择两个特征:花瓣长度、花瓣宽度和不包括 Iris-virginica 数据。通过这种方式,我们可以在二维空间中绘制数据点,其中 x 轴和 y 轴分别表示花瓣长度和花瓣宽度。

640.webp (15).jpg

训练数据集

每个数据点都有自己的标签:Iris-Setosa 或 Iris-versicolor(数据集中的 0 和 1)。因此,该数据集可用于 KNN 分类,因为它本质上是一种有监督的 ML 算法。假设我们的 ML 模型(k = 4 的 KNN)已经在这个数据集上进行了训练,我们选择了两个输入特征只有 20 个数据点,如上图所示。

到目前为止,KNN 分类器已准备好对新数据点进行分类。因此,要一种方法来让模型决定新数据点可以分类的位置。

640.webp (16).jpg

预测新数据点的标签

选择欧几里得距离是为了让每个经过训练的数据点投票给新数据样本适合的位置:Iris-Setosa 或 Iris-versicolor。至此,新数据点到我们训练数据的每个点的欧几里德距离都计算出来了,如下图所示:

640.webp (17).jpg

当k = 4时,KNN分类器需要选择最小的四个距离,代表新点到以下点的距离:point1、point5、point8和point9,如图所示:

640.webp (18).jpg

四个邻居投票支持 Iris-Setosa

因此,新的数据样本被归类为 Iris-Setosa。使用这个类比,可以想象更高的维度和其他分类器。

如前所述,每个域都需要一种计算距离的特定方法。

平方欧几里得距离
顾名思义,平方欧几里得距离等于欧几里得距离的平方。因此,平方欧几里得距离可以在计算观测之间的距离的同时减少计算工作。例如,它可以用于聚类、分类、图像处理和其他领域。使用这种方法计算距离避免了使用平方根函数的需要。

n维空间中两点之间的平方欧几里得距离

819548AC-6652-471a-9559-9D51E11BD1A2.png

L1 范数、城市街区、曼哈顿或出租车距离

640.webp (19).jpg

曼哈顿轮廓

该指标对于测量给定城市中两条街道之间的距离非常有用,可以根据分隔两个不同地方的街区数量来测量距离。例如,根据下图,A 点和 B 点之间的距离大致等于 4。

640.webp (20).jpg

现实世界中的曼哈顿距离

创建此方法是为了解决计算给定城市中源和目的地之间的距离的问题,在该城市中,几乎不可能直线移动,因为建筑物被分组到一个网格中,阻碍了直线路径。因此得名城市街区。

你可以说 A 和 B 之间的距离是欧几里得距离。但是,你可能会注意到这个距离没有用。例如,你需要有一个有用的距离来估计旅行时间或需要开车多长时间。相反,如果你知道并选择街道的最短路径,这会有所帮助。因此,这取决于如何定义和使用距离的情况。

n维空间中两点之间的曼哈顿距离表示为:

663EAA72-0F56-47bf-9FB9-C222765C66C5.png

对于二维网格,二维空间中两点之间的曼哈顿距离公式可以写成:

372341CE-59C0-478d-9AE2-C8BCFCD351C2.png

回忆之前的 KNN 示例,计算从新数据点到训练数据的曼哈顿距离将产生以下值:

640.webp (21).jpg

使用曼哈顿距离的 KNN 分类(并列)

显而易见,有两个数据点投票支持 Iris-Setosa,另外两个数据点投票支持 Iris-versicolor,这意味着这是个平局。

640.webp (22).jpg

曼哈顿距离:平局!

你可能在某个地方遇到过这个问题,一个直观的解决方案是改变 k 的值,如果 k 大于 1,则减少 1,否则增加 1。

但是,对于之前的每个解决方案,将获得 KNN 分类器的不同行为。例如,在我们的示例中,k=4,将其更改为 k=3将导致以下值:

640.webp (23).jpg

将 k 减少 1

这种花被归类为花斑鸢尾。以同样的方式,将其更改为 k=5 将导致以下值:

640.webp (24).jpg

将 k 增加 1

这种花被归类为Iris-Setosa。因此,由你决定是否需要增加或减少 k 的值。

但是,有人会争辩说,如果度量标准不是问题的约束条件,你可以更改它。例如,计算欧几里得距离可以解决这个问题:

640.webp (25).jpg

改变距离度量也会打破平局

这种花被强烈归类为 Iris-Setosa。

在我看来,如果你不必更改曼哈顿距离并对 k 使用相同的值,那么添加新维度或特征(如果可用)也会打破平局。例如,将萼片宽度添加为新尺寸会导致以下结果:

640.webp (26).jpg

向模型添加新特征

这种花被归类为杂色鸢尾。

这是 3-D 空间中的图,其中 x 轴、y 轴和 z 轴分别代表萼片宽度、花瓣长度和花瓣宽度:

640.webp (27).jpg

Iris 数据集的 3-D 图

计算曼哈顿距离比前两种方法计算速度更快。如公式所示,它只需要加减运算,结果证明这比计算平方根和 2 的幂要快得多。

国际象棋中主教使用曼哈顿距离在两个相同颜色的水平或垂直块之间移动:

640.webp (28).jpg

Bishop 使用曼哈顿距离(如果没有看到,可通过将棋盘旋转 45° 来想象一下)。换句话说,让主教越过红色方块所需的移动次数(距离)等于曼哈顿距离,即 2。

除此之外,如果数据存在许多异常值,曼哈顿距离将优于欧几里得距离。

L1-norm 比 l2-norm 给出更稀疏的估计。除此之外,L1 范数和L2 范数通常用于神经网络的正则化,以最小化权重或将某些值归零,就像套索回归中使用的那样。

640.webp (29).jpg

套索和岭回归的约束区域的形式(来源:[维基百科](https://en.wikipedia.org/wiki/Lasso_(statistics "维基百科")#/media/File:L1_and_L2_balls.svg))。

如上图所示,L1-norm 尝试将 W1 权重归零并最小化另一个权重。然而,L2 范数试图最小化 W1 和 W2 的权重(如 W1 = W2)。

这篇文章深入探讨正则化,它的主要目标是解释常见的距离函数,同时在这里说明一些用法并使其尽可能易于理解。

堪培拉距离
它是聚类中使用的曼哈顿距离的加权版本,如模糊聚类、分类、计算机安全[2]和火腿/垃圾邮件检测系统。与之前的指标相比,它对异常值的鲁棒性更强。

L∞ 范数,切比雪夫距离,最大距离

640.webp (30).jpg

切比雪夫轮廓

两个 n维 观测值或向量之间的切比雪夫距离(Chebyshev)等于数据样本坐标之间变化的最大绝对值。在二维世界中,数据点之间的切比雪夫距离可以确定为其二维坐标的绝对差之和。

两点 P 和 Q 之间的切比雪夫距离定义为:

6BB9A9DB-CD55-43bf-8609-778EB6AA3B61.png

切比雪夫距离是一个度量,因为它满足成为度量的四个条件。

640.webp (31).jpg

切比雪夫距离满足成为度量的所有条件

但是,你可能想知道 min 函数是否也可以是一个指标!

min 函数不是度量标准,因为有一个反例(例如水平线或垂直线),其中  且 。但是,仅当  时它才应为零!

640.webp (32).jpg

你可以想到的使用切比雪夫距离指标的用例之一是交易股票、加密货币,其特征是交易量、买入价、卖出价……

例如,你需要找到一种方法来告诉大多数加密货币在奖励之间有很大差距和损失。而切比雪夫距离非常适合这种特殊情况。

在棋盘中使用切比雪夫距离的另一种常见场景,其中国王或王后的移动次数等于到达相邻方格的距离,如下图所示:

640.webp (33).jpg

国王使用切比雪夫距离移动

640.webp (34).jpg

皇后在一些正方形之间使用切比雪夫距离

Lp 范数,闵可夫斯基距离

640.webp (35).jpg

不同 p 值的 Minkowski 等高线

闵可夫斯基(Minkowski)距离只是之前距离度量的概括:欧几里得、曼哈顿和切比雪夫。它被定义为 n维空间中两个观测值之间的距离,如以下公式所示:

73DE9A96-2710-4e83-B204-8AB00D6215C8.png

其中 P、Q 是两个给定的 nD 点,p 代表 Minkowski 度量。对于特定的 p 值,您可以得出以下指标:
  • p = 1: 曼哈顿距离。
  • p = 2: 欧几里得距离。
  • p → +∞ : 切比雪夫距离,逻辑或(点 D = A或B = 1或1 = 1)。
  • p → 0: 逻辑与(点 C = A AND B = 零)。
  • p → -∞ : 最小距离(点 D 的对称性)。


余弦距离
该指标广泛用于文本挖掘、自然语言处理和信息检索系统。例如,它可用于衡量两个给定文档之间的相似性。它还可用于根据消息的长度识别垃圾邮件。

余弦距离可以按如下方式测量:

CD7F3578-F5D9-49b8-8D59-447B46FE4B05.png

其中 P 和 Q 代表两个给定的点。这两个点可以表示文档中单词的频率,下面的例子中解释了这一点。

例如,以包含以下短语的三个文档为例:

  • 文件A: "I love to drink coffee in the morning."
  • 文件B: "I like to drink coffee."
  • 文件C: "My friend and I work at a coffee shop in our hometown. He tells some good jokes in the morning. We like to begin the day by drink a cup of tea each."


计算每个单词的频率,出现次数将导致以下结果:

640.webp (36).jpg

词的频率

在计算出现次数之前,你已经先验地知道文档 A 和 B 在含义上非常相似:“I love to drink coffee” 然而,文件 C 包含文件 A 的所有单词,但从频率表中的含义非常不同。为了解决这个问题,你需要计算余弦相似度来判断它们是否相似。

一方面,这可以说明信息检索或搜索引擎是如何工作的。将文档 A 视为对给定源(图像、文本、视频……)的查询(短消息),将文档 C 视为需要获取并作为查询响应返回的网页。

另一方面,欧几里得距离无法给出短文档和大文档之间的正确距离,因为在这种情况下它会很大。使用余弦相似度公式将计算两个文档在方向而非大小方面的差异。

为了说明这一点,以下两个文件为例:
  • 文件 A: "Bitcoin Bitcoin Bitcoin Money"
  • 文件 B: "Money Money Bitcoin Bitcoin"


用“Bitcoin”这个词作为 x 轴,把“Money”这个词作为 y 轴。这意味着文档 A 可以表示为向量 A(3,1),文档 B 可以表示为 B(2,2)。

计算余弦相似度将得到以下值:

357C053E-F64F-4fd7-8FCA-0FB7D34F9617.png

Cosine_Similarity = 0.894 意味着文档 A 和 B 非常相似。cos(angle)大于(接近1)表示角度小(26.6°),两个文档A和B彼此接近。

但是,你不能将余弦相似度的值解释为百分比。例如,值 0.894 并不意味着文档 A 是 89.4%,与 B 相似。它意味着文档 A 和 B 非常相似,但我们不知道有多少百分比!该值没有阈值。换句话说,你可以将余弦相似度的值解释如下:

它越大,文档 A 和 B 相似的可能性就越大,反之亦然。

再举一个 A(1, 11) 和 B(22, 3) 的例子
A(p1,p2),B(q1,q2)
计算余弦相似度:

750D3843-5E46-43b8-A3B3-76BF6BF3DFE7.png

然而,欧几里得距离会给出一个很大的数字,比如 22.4,这并不能说明向量之间的相对相似性。另一方面,余弦相似度也适用于更高维度。

余弦相似度的另一个有趣应用是OpenPose[3]项目。

参考资料
[1] 参考原文: https://towardsdatascience.com/1 ... science-3eb914d2681
[2] 计算机安全: https://citeseerx.ist.psu.edu/vi ... 4&rep=rep1&type=pdf
[3] OpenPose: https://github.com/CMU-Perceptual-Computing-Lab/openpose

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据科学 相似性 希望对你有所帮助 Geometry There

沙发
时光人 学生认证  发表于 2022-2-18 10:04:41
相信大家已经读过数据科学中 17 种相似性和相异性度量(上),如果你还没有阅读,请戳&#128073;这里。本篇将继续介绍数据科学中 17 种相似性和相异性度量,希望对你有所帮助。

皮尔逊相关距离

相关距离量化了两个属性之间线性、单调关系的强度。此外,它使用协方差值作为初始计算步骤。但是,协方差本身很难解释,并且不会显示数据与表示测量之间趋势的线的接近或远离程度。

为了说明相关性意味着什么,回到我们的 Iris 数据集并绘制 Iris-Setosa 样本以显示两个特征之间的关系:花瓣长度和花瓣宽度。

640.webp (37).jpg

具有两个特征测量值的 Iris-Setosa 样本

已估计相同花卉样本的两个特征的样本均值和方差,如下图所示。

一般来说,我们可以说花瓣长度值相对较低的花的花瓣宽度值也相对较低。此外,花瓣长度值相对较高的花朵也具有花瓣宽度值相对较高的值。此外,我们可以用一条线来总结这种关系。


640.webp.jpg
样本均值和方差估计

这条线表示花瓣长度和花瓣宽度的值一起增加的积极趋势。

协方差值可以对三种关系进行分类:


640.webp (1).jpg

相关距离可以使用以下公式计算:

AED5F86B-DF34-4881-A34B-23DE60E34C7E.png

其中分子表示观测值的协方差值,分母表示每个特征方差的平方根。

举一个简单的例子来演示我们如何计算这个公式。


640.webp (2).jpg

红点和蓝点分别具有以下坐标:

A(1.2, 0.6) 和 B (3.0, 1.2)。

两次测量的估计样本均值等于:


CAB0DD12-22ED-4779-9DA7-59138359BCE6.png

该指标的最后一点是相关性并不意味着因果关系。例如,具有相对较小花瓣长度值的iris-Setosa 并不意味着花瓣宽度值也应该较小。是充分条件但不是必要条件!可以说,小花瓣长度可能导致小花瓣宽度,但不是唯一的原因!

斯皮尔曼相关

与 Pearson 相关性一样,每当我们处理双变量分析时,都会使用 Spearman 相关性。但是,与 Pearson 相关性不同,Spearman 相关性在两个变量都按等级排序时使用,它可用于分类和数字属性。

640.webp (3).jpg

斯皮尔曼相关指数可以使用以下公式计算:

8D1A269E-7954-406f-94B8-647E369137AE.png
Spearman 相关性常用于假设检验。

马氏距离

马氏距离Mahalanobis是一种主要用于多变量统计测试的度量指标,其中欧氏距离无法给出观测值之间的实际距离。它测量数据点离分布有多远。

640.webp (4).jpg

来自平均值的具有相同 ED 值的两个点。

如上图所示,红点和蓝点与均值的欧几里得距离相同。但是,它们不属于同一区域或集群:红点更有可能与数据集相似。但是蓝色的被认为是异常值,因为它远离代表数据集中最大可变性方向的线(长轴回归)。因此,引入了马哈拉诺比斯度量来解决这个问题。

Mahalanobis 度量试图降低两个特征或属性之间的协方差,因为您可以将之前的图重新缩放到新轴。并且这些新轴代表特征向量,如前面所示的第一个特征向量。

特征向量的第一个方向极大地影响了数据分类,因为它具有最大的特征值。此外,与其他垂直方向相比,数据集沿该方向展开得更多。

使用这种技术,我们可以沿着这个方向缩小数据集并围绕均值(PCA)旋转它。然后我们可以使用欧几里得距离,它给出了与前两个数据点之间的平均值的不同距离。这就是马哈拉诺比斯指标的作用。


C77D3106-03C9-409d-9D4F-CB3511D20FBF.png

两个物体 P 和 Q 之间的马氏距离。

其中C表示属性或特征之间的协方差矩阵。

为了演示这个公式的用法,我们计算 A(1.2, 0.6) 和 B (3.0, 1.2) 之间的距离,来自之前在相关距离部分的例子。

现在评估协方差矩阵,其定义二维空间中的协方差矩阵如下:


0C255E8B-6A4E-4de9-83C0-2B00E76CD264.png

其中 Cov[P,P] = Var[P] 和 Cov[Q,Q]= Var[Q],以及两个特征之间的协方差公式:

DD9F42CA-C3E8-4009-B1C0-8E973B8F26FE.png

因此,两个物体 A 和 B 之间的马哈拉诺比斯距离可以计算如下:


BEF07E1C-F4FD-47a7-926F-17DCF1E74FD1.png
7CCDBDD3-9411-4f28-80D9-4645F7B37D35.png
DEDB301A-1956-4d26-91EB-92E26EF0DFC1.png

除了其用例之外,马哈拉诺比斯距离还用于Hotelling t 方检验[2]。

标准化欧几里得距离

标准化或归一化是在构建机器学习模型时在预处理阶段使用的一种技术。该数据集在特征的最小和最大范围之间存在很大差异。在对数据进行聚类时,此比例距离会影响 ML 模型,从而导致错误的解释。

例如,假设有两个不同的特征,它们在范围变化方面表现出很大差异。例如,假设有一个从 0.1 到 2 变化的特征和另一个从 50 到 200 变化的特征。使用这些值计算距离会使第二个特征更具优势,从而导致不正确的结果。换句话说,欧氏距离将受到具有最大值的属性的高度影响。

这就是为什么标准化是必要的,以便这些特征以平等地做出贡献。它是通过将变量转换为所有具有等于 1 的相同方差并将特征集中在平均值周围来完成的,如下面的公式所示 Z 分数标准化:


8F066785-7652-44d3-AEDB-CBCFBDE1C8A4.png

标准化的欧几里德距离可以表示为:

AA05456F-6BBA-4150-9365-AADCFF31A1AD.png

可以应用这个公式来计算 A 和 B 之间的距离。

5FD6EC7A-6C55-4135-ACE1-8CE8F4747C05.png

卡方距离

卡方距离通常用于计算机视觉中,同时进行纹理分析,以发现归一化直方图之间的(不同)相似性,称为“直方图匹配”。


640.webp (6).jpg

直方图匹配。资料来源:维基百科直方图匹配[3]

人脸识别算法将是一个很好的例子,它使用这个指标来比较两个直方图。例如,在新面孔的预测步骤中,模型根据新捕获的图像计算直方图,将其与保存的直方图(通常存储在 .yaml 文件中)进行比较,然后尝试为其找到最佳匹配。这种比较是通过计算每对 n 个 bin 的直方图之间的卡方距离来进行的。


D2968A02-B533-42a6-9560-C47DC4E2D5C8.png

此公式与标准正态分布的卡方统计检验不同,后者用于使用以下公式决定是保留还是拒绝原假设:

03AAE398-58C4-425c-82B3-14E53E3E23A0.png

其中 O 和 E 分别代表观察到的和预期的数据值。

假设对 1000 人进行了一项调查,以测试给定疫苗的副作用,并查看是否存在基于性别的显着差异。因此,每个人都可以是以下四类之一:

1- 男性无副作用。
2- 男性有副作用。
3- 女性无副作用。
4- 有副作用的女性。

零假设是:两种性别之间的副作用没有显着差异。

为了接受或拒绝此假设,可以计算以下数据的卡方检验值:


640.webp (7).jpg

收集的数据

通过将这些值代入卡方检验公式,将得到 1.7288。

使用自由度等于1的卡方表[4],将获得介于 0.2 和 0.1 > 0.05 之间的概率 → 接受原假设。

请注意,自由度 =(列数 -1)x(数量或行数 -1)

这里只是想让你快速回顾一下假设检验;我希望你觉得这对你有帮助。

Jensen-Shannon 距离

Jensen-Shannon 距离计算两个概率分布之间的距离。它使用 Kullback Leibler divergence(相对熵)公式来计算距离。


F56DBEFF-9709-4e6d-8770-226D29323694.png

Jensen-Shannon 距离。

其中 R 是 P 和 Q 之间的中点。

此外,只需简要说明如何解释熵的值:

事件A的低熵意味着知道这个事件会发生;换句话说,如果事件 A 会发生,我并不感到惊讶,而且我非常有信心它会发生。高熵的类比相同。

另一方面,Kullback Leibler 散度本身不是距离度量,因为它不是对称的:D(P||Q)!=D(Q||P)


莱文斯坦距离

用于测量两个字符串之间相似性的度量。它等于将给定字符串转换为另一个字符串所需的最少操作数。共有三种类型的操作:

  • 代换
  • 插入
  • 删除


对于 Levenshtein 距离,替代成本是两个单位,另外两个操作的替代成本是一个。

例如,取两个字符串 s=“Bitcoin”和 t=“Altcoin”。要从 s 到 t,需要用字母“A”和“l”两次替换字母“B”和“I”。因此,d(t, s) = 2 * 2 = 4。

Levenshtein 距离有很多用例,如垃圾邮件过滤、计算生物学、弹性搜索等等。

汉明距离

汉明距离等于两个相同长度的码字不同的位数。在二进制世界中,它等于两个二进制消息之间不同位的数量。

例如,可以使用以下方法计算两条消息之间的汉明距离:

A9C9524E-B74C-4d5c-9FE1-3373849E572B.png

它看起来像分类数据上下文中的曼哈顿距离。

对于长度为 2 位的消息,此公式表示分隔两个给定二进制消息的边数。它最多可以等于二。

640.webp (8).jpg
二维

同样,对于长度为 3 位的消息,此公式表示分隔两个给定二进制消息的边数,它最多可以等于三。

640.webp (9).jpg
三维

举一些例子来说明汉明距离是如何计算的:

H(100001, 010001) = 2
H(110, 111) = 1

如果其中一个消息包含全零,则汉明距离称为汉明权重,等于给定消息中非零数字的数量。在我们的例子中,它等于 1 的总数。

H(110111,000000) = W (110111) = 5

如果可能,汉明距离用于检测和纠正通过不可靠的噪声信道传输的接收消息中的错误。

杰卡德/谷本距离

用于衡量两组数据之间相似性的指标。有人可能会争辩说,为了衡量相似性,需要计算两个给定集合之间的交集的大小(基数、元素数)。

然而,仅凭公共元素的数量并不能告诉我们它与集合大小的相对关系。这就是 Jaccard 系数背后的直觉。

所以Jaccard提出,为了衡量相似度,你需要用交集的大小除以两组数据的并集的大小。

640.webp (10).jpg

杰卡德距离

Jaccard 距离与 Jaccard 系数互补,用于衡量数据集之间的差异,计算公式为:

46E51BAC-F87E-4718-A966-15911CA110AE.png

下图说明了如何将此公式用于非二进制数据的Jaccard 索引示例。

0B06719F-F7D1-4df8-A989-EEDACFF524C8.png

对于二元属性,Jaccard 相似度使用以下公式计算:

B871590D-B1CB-4f46-AC48-C6C9B6FF42A2.png

Jaccard 索引可用于某些领域,如语义分割、文本挖掘、电子商务和推荐系统。

现在你可能会想:“好吧,但你刚才提到余弦距离也可以用于文本挖掘。你更喜欢使用什么作为给定聚类算法的度量?无论如何,这两个指标之间有什么区别?”

很高兴你问了这个问题。为了回答这个问题,我们需要比较两个公式的每一项。

Jaccard 和余弦公式

7224C9C5-0D9E-4c05-8B83-A98459CCD83A.png

这两个公式之间的唯一区别是分母项。不是用 Jaccard 计算两个集合之间的联合大小,而是计算 P 和 Q 之间点积的大小。而不是在 Jaccard 公式的分母中添加项;你正在计算余弦公式中两者之间的乘积。我不知道那是什么解释。据我所知,点积告诉我们一个向量在另一个方向上有多少。除此之外,如果有什么要补充的,可在评论区给我留言。

Sørensen–Dice

Sørensen-Dice 距离是一种统计指标,用于衡量数据集之间的相似性。它被定义为 P 和 Q 的交集大小的两倍,除以每个数据集 P 和 Q 中元素的总和。

D61A6231-86D5-4c7c-9F08-CAA82BBE688B.png

Sørensen–Dice 系数。

与 Jaccard 一样,相似度值的范围从零到一。但是,与 Jaccard 不同的是,这种相异性度量不是度量标准,因为它不满足三角不等式条件。

Sørensen–Dice 用于词典编纂[5]、图像分割[6]和其他应用程序。

Pydist2

pydist2是一个python包,1:1代码采用pdist[7]和pdist2[8] Matlab函数,用于计算观测之间的距离。pydist2 当前支持的测量距离的方法列表可在阅读文档中找到[9]。

  1. from pydist2.distance import pdist1, pdist2
  2. import numpy as np
  3. x = np.array([[1, 2, 3],
  4.        [7, 8, 9],
  5.        [5, 6, 7],], dtype=np.float32)
  6. y = np.array([[10, 20, 30],
  7.        [70, 80, 90],
  8.        [50, 60, 70]], dtype=np.float32)
  9. a = pdist1(x)
  10. a
  11. >>> array([10.39230485,  6.92820323,  3.46410162])
  12. pdist1(x, 'seuclidean')
  13. >>> array([3.40168018, 2.26778677, 1.13389339])
  14. pdist1(x, 'minkowski', exp=3)
  15. >>> array([8.65349742, 5.76899828, 2.88449914])
  16. pdist1(x, 'minkowski', exp=2)
  17. >>> array([10.39230485,  6.92820323,  3.46410162])
  18. pdist1(x, 'minkowski', exp=1)
  19. >>> array([18., 12.,  6.])
  20. pdist1(x, 'cityblock')
  21. >>> array([18., 12.,  6.])
  22. pdist2(x, y)
  23. >>> array([[ 33.67491648, 135.69819453, 101.26203632],
  24. ...       [ 24.37211521, 125.35549449,  90.96153033],
  25. ...       [ 27.38612788, 128.80217389,  94.39279634]])
  26. pdist2(x, y, 'manhattan')
  27. >>> array([[ 54., 234., 174.],
  28. ...       [ 36., 216., 156.],
  29. ...       [ 42., 222., 162.]])
  30. pdist2(x, y, 'sqeuclidean')
  31. >>> array([[ 1134., 18414., 10254.],
  32. ...       [  594., 15714.,  8274.],
  33. ...       [  750., 16590.,  8910.]])
  34. pdist2(x, y, 'chi-squared')
  35. >>> array([[ 22.09090909, 111.31927838,  81.41482329],
  36. ...       [  8.48998061,  88.36363636,  59.6522841 ],
  37. ...       [ 11.75121275,  95.51418525,  66.27272727]])
  38. pdist2(x, y, 'cosine')
  39. >>> array([[-5.60424152e-09,  4.05881305e-02,  3.16703408e-02],
  40. ...       [ 4.05880431e-02,  7.31070616e-08,  5.62480978e-04],
  41. ...       [ 3.16703143e-02,  5.62544701e-04, -1.23279462e-08]])
  42. pdist2(x, y, 'earthmover')
  43. >>> array([[ 90., 450., 330.],
  44. ...       [ 54., 414., 294.],
  45. ...       [ 66., 426., 306.]])
复制代码


写在最后
这里已到达本文的结尾,本次内容已经分享结束了,在本文中,你了解了数据科学中使用的不同类型的指标及其在许多领域的应用。如果你有什么想说的,请尽管在文末留言区留言!

参考资料



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-7 11:32