杰卡德相似系数(Jaccardsimilarity coefficient)

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杰卡德相似系数(Jaccardsimilarity coefficient)相关的知识,希望对你有一定的参考价值。

(1)杰卡德相似系数

两个集合A和B交集元素的个数在A、B并集中所占的比例,称为这两个集合的杰卡德系数,用符号 J(A,B) 表示。杰卡德相似系数是衡量两个集合相似度的一种指标(余弦距离也可以用来衡量两个集合的相似度)。

jaccard值越大说明相似度越高。

(2)杰卡德距离

与杰卡德相似系数相反的概念是杰卡德距离(Jaccard Distance),可以用如下公式来表示:

杰卡德距离用两个两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。

jaccard相似度的缺点是值适用于二元数据的集合。

(3)杰卡德相似系数的应用

假设样本A和样本B是两个n维向量,而且所有维度的取值都是0或1。例如,A(0,1,1,0)和B(1,0,1,1)。我们将样本看成一个集合,1表示集合包含该元素,0表示集合不包含该元素。

p:样本A与B都是1的维度的个数

q:样本A是1而B是0的维度的个数

r:样本A是0而B是1的维度的个数

s:样本A与B都是0的维度的个数

那么样本A与B的杰卡德相似系数可以表示为:

此处分母之所以不加s的原因在于

对于杰卡德相似系数或杰卡德距离来说,它处理的都是非对称二元变量。非对称的意思是指状态的两个输出不是同等重要的,例如,疾病检查的阳性和阴性结果。

按照惯例,我们将比较重要的输出结果,通常也是出现几率较小的结果编码为1(例如HIV阳性),而将另一种结果编码为0(例如HIV阴性)。给定两个非对称二元变量,两个都取1的情况(正匹配)认为比两个都取0的情况(负匹配)更有意义。负匹配的数量s认为是不重要的,因此在计算时忽略。

再举一例:

举一个非对称(注意这里强调非对称)二元属性的相似度

已知有序集合A,B,每个集合都含有n个二元的属性,即每个属性都是0或1,

M11表示A和B对应位都是1的属性的数量

M10表示A中为1,B中对应位为0的总数量

M01表示A中为0,B中对应位为1的总数量

M00表示对应位都为0的总数量

M11+M10+M01+M00=n

Jaccard 相似度:

jaccard距离:

这里有人会有疑问,jaccard相似度是指交集和并集的比值,这里J的分子为什么只有M11没有M00,这是因为我们求的是非对称二元属性的相似度,这里只有非0值才受关注,比如考虑普通人的健康状况,属性集合(糖尿病,心脏病,精神病,。。。),糖尿病指标0表示没有糖尿病,1表示糖尿病,心脏病指标0表示没有心脏病,1表示心脏病,比较两个人的患病情况,我们只关注有病的情况。所以分子和分母中没有M00

(4)杰卡德相似度算法分析

杰卡德相似度算法没有考虑向量中潜在数值的大小,而是简单的处理为0和1,不过,做了这样的处理之后,杰卡德方法的计算效率肯定是比较高的,毕竟只需要做集合操作。

Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。

推荐算法之Jaccard相似度与Consine相似度

对于个性化推荐来说,最核心、重要的算法是相关性度量算法。相关性从网站对象来分,可以针对商品、用户、旺铺、资讯、类目等等,从计算方式看可以分为文本相关性计算和行为相关性计算,具体的实现方法有很多种,最常用的方法有余弦夹角(Cosine)方法、杰卡德(Jaccard)方法等。Google对新闻的相似性计算采用的是余弦夹角,CBU的个性化推荐以往也主要采用此方法。从9月份开始,CBU个性化推荐团队实现了杰卡德计算方法计算文本相关性和行为相关性,并且分别在线上做了算法效果测试。本文基于测试结果,进行了对比及一些分析比较。

行为相关性的度量比较:在CTR(曝光点击率)指标上,针对行为相关性计算的Jaccard的推荐精准度比Cosine方法要高的多。

文本相关性的度量比较:cosine好一点点,但是Jaccard利于map/red计算

Jaccard系数主要的应用的场景

Jaccard的应用很广,最常见的应用就是求两个文档的文本相似度,通过一定的办法(比如shinging)对文档进行分词,构成词语的集合,再计算Jaccard相似度即可。当然,用途还有很多,不过大多需要结合其他的技术。比如:

  1. 过滤相似度很高的新闻,或者网页去重

  1. 考试防作弊系统

  1. 论文查重系统

  1. 计算对象间距离,用于数据聚类等。

参考地址,感谢各位作者:

https://www.cnblogs.com/chaosimple/p/3160839.html

https://www.cnblogs.com/arachis/p/Similarity.html

https://blog.csdn.net/u010700335/article/details/72626997?locationNum=3&fps=1

https://blog.csdn.net/u012836354/article/details/79103099

https://blog.csdn.net/bananaml/article/details/52894295

https://blog.mythsman.com/2016/09/16/1/

http://blog.sina.com.cn/s/blog_4b59de07010166z9.html

https://baike.baidu.com/item/Jaccard%E7%B3%BB%E6%95%B0/6784913?fr=aladdin

以上是关于杰卡德相似系数(Jaccardsimilarity coefficient)的主要内容,如果未能解决你的问题,请参考以下文章

R语言计算杰卡德相似系数(Jaccard Similarity)实战:自定义函数计算Jaccard相似度对字符串向量计算Jaccard相似度将Jaccard相似度转化为Jaccard距离

几种相似性/距离(杰卡德距离和余弦距离)与其matlab实现

聚类算法——DBSCAN算法原理及公式

关于集合的相似度测量方法

初探推荐系统-01

机器学习中“距离与相似度”计算汇总