算法 基础教程

算法 高级教程

相似性算法

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/algorithm-jaccard.html

jaccard 相似系数详解及基于杰卡德相似度的应用


Jaccard 相似系数是一种用于衡量两个集合之间相似度的指标,它衡量的是两个集合的交集元素与并集元素的比值。

Jaccard 系数

公式

杰卡德相似系数的计算公式如下:

\(J(A,B) = \frac{|A \cap B|}{|A \cup B|}\)

其中,A 和 B 分别表示两个集合,\(|A \cap B|\) 表示两个集合的交集元素数量,\(|A \cup B|\) 表示两个集合的并集元素数量。

从如上公式,可以看出,Jaccard 系数的值域在 \([0,1]\) 之间,值越大表示两个集合越相似。

示例解释

Jaccard 相似系数可以通过一个具体的例子来更好地理解其计算方式。

假设有两个集合,集合 A 和集合 B,分别表示两篇文章中出现过的单词。我们想要衡量这两篇文章之间的相似度,可以使用 Jaccard 相似系数来做这个任务。

集合 A 包含的单词: {apple, banana, orange, pear, kiwi}

集合 B 包含的单词: {apple, orange, strawberry, grape}

在这个例子中,同时在集合 A 和集合 B 中都出现的单词数,即交集元素是 {apple, orange}\(|A \cap B|\) 等于 2。

出现在集合 A 或集合 B 中的所有不同单词数,即两个集合的并集元素数量,\(|A \cup B|\) 等于 7。

现在我们可以代入这些值来计算 Jaccard 相似系数:

\(J(A,B) = \frac{2}{7} \approx 0.2857\)

这表示集合 A 和集合 B 之间的 Jaccard 相似系数约为 0.2857,即它们之间的重叠程度。值越接近 1,表示两个集合越相似;值越接近 0,表示两个集合越不相似。

在实际应用中,可以将这种计算推广到更大的数据集,比如比较更多的文本、基因组、用户兴趣等。通过计算 Jaccard 相似系数,可以快速获取关于数据集相似性的初步信息,然后根据具体需求决定是否进一步使用更复杂的相似度度量或算法。

Jaccard 距离

公式

杰卡德距离(Jaccard Distance):与杰卡德相似系数相反,用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。

杰卡德距离的表达式为:

\(d_{J}(A,B) = 1 - J(A,B) = \frac{|A \cup B|-|A \cap B|}{|A \cup B|}\)

相关应用

Jaccard 相似系数在许多领域都有广泛的应用。

下面结合实际应用介绍几个例子:

推荐系统

Jaccard 系数既可以应用于基于物品的协同过滤(Item-based Collaborative Filtering,ItemCF),也可以应用于基于用户的协同过滤(User-based Collaborative Filtering,UserCF)。

在 ItemCF 中,我们利用 Jaccard 系数计算不同物品之间的相似度,然后根据物品相似度生成推荐。而在 UserCF 中,我们可以利用 Jaccard 系数计算不同用户之间的相似度,然后根据用户相似度将邻居用户喜欢的推荐给当前用户

文本相似度计算

在自然语言处理中,可以使用 Jaccard 相似系数来衡量两个文本的相似度。将文本转化为词汇集合,然后计算它们的 Jaccard 相似系数。这在搜索引擎中常被用来寻找相似的文档或推荐相关内容。

数据去重

可以用 Jaccard 距离比较数据记录之间的相似度,找出重复或近似的记录。例如电商网站可以用它来对产品目录进行数据清洗,标识出重复数据。

社交网络分析

在社交网络中,Jaccard 相似系数可以用来分析两个用户之间的关系强度。如果两个用户共同关注了很多相同的人或页面,他们的 Jaccard 相似系数会较高,可能表示他们有较强的社交关系。

生物信息学

可以应用 Jaccard 距离对基因组序列或蛋白质序列进行比较,判断它们的相似性。这可以用于功能预测或分类。

在基因组学研究中,Jaccard 相似系数可以用来比较不同个体的基因组。基因集合的交集表示共有的基因,而基因集合的并集表示所有存在的基因,从而可以用 Jaccard 相似系数衡量基因组之间的相似度。

图像处理

可以提取图像的特征向量,然后用 Jaccard 距离计算两张图片的相似度,用于图像搜索、分类等。

在图像处理领域,Jaccard 相似系数可以用来比较两个图像的区域重叠情况。这在物体检测和分割任务中常被用来评估算法的性能。

指纹识别

可以用 Jaccard 距离对比两枚指纹的明暗图形,判断它们是否来自同一个人。

语音识别

可以用 Jaccard 距离比较语音频谱图,判断说话者是否为同一人。

余弦相似度(CosineSimilarity)是用来度量两个向量之间角度余弦值的大小,来判断两个向量是否相似的一种方法。余弦相似度公式余弦相 ...
在 Elasticsearch 中,默认情况下,文档是按照相关性得分倒序排列的,其对应的相关性得分字段用 _score 来表示,它是浮点数类 ...
要将自定义或其他库的函数应用于Pandas对象,有三个重要的方法,下面来讨论如何使用这些方法。使用适当的方法取决于函数是否期望在整个Data ...
Redis丰富的数据存储结构及基于内存的高性能操作使得其在很多应用场景中大显身手。以下列举了一些常涉及Redis的应用场景。 ...
Elasticsearch是一个开源的分布式搜索和分析引擎,旨在处理大规模数据的搜索、分析和可视化。地理空间数据分析:Elasticsear ...