杰卡德系数(Jaccard Index)

杰卡德系数(Jaccard Index)

杰卡德系数,又称为杰卡德相似系数,用于比较两个样本之间的差异性和相似性。杰卡德系数越高,则两个样本相似度越高。

定义

有两个集合A和B,那么这两个集合的杰卡德系数为A和B的交集除以A和B的并集。
在这里插入图片描述
当集合A,B都为空时,J(A,B)定义为1。
杰卡德距离是杰卡德系数的补集,用来描述两个集合的不相似度。杰卡德距离越大,两个样本相似度越低。
在这里插入图片描述
如有:

集合A={a,b,c,d,e}

集合B={a,b,f,g,h,i}

则:A∩B={a,b},A∪B={a,b,c,d,e,f,g,h,i}。

杰卡德系数为2/9,杰卡德距离为1-2/9。

应用

比较两个集合是否相似,就是比较这两个集合共有元素的占比。因为集合具有互异性,集合中任意两个元素都是不同的对象,集合A中的任意一个元素在集合B中只有两种状态,即存在和不存在(或者可以理解为值是否相等,相等则存在),但无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。因此,杰卡德系数可以用来计算非对称二元属性对象的相似性。

先了解几个基本概念:

数据集由数据对象组成。

一个数据对象代表一个实体。 数据库中行对应数据对象,列对应于属性。

二元属性:取值为0和1的属性,也称为布尔属性。

对称二元属性:属性两个状态值权重相同,比如性别的男和女。

非对称二元属性:属性两个状态值权重不同,比如HIV感染的阳性和阴性,阳性显然更重要些。

举个例子:

比较两部手机的差异,我们可以用一个n维向量来描述这部手机,比如手机有这些特征:1、是否国产 2、是否刘海屏 3、是否安卓系统 4、价格超过5000。我们用1来表示”是“,用0来表示”否“,那么:

手机A的向量为:{1,1,1,0}

手机B的向量为:{0,1,0,1}

这个向量的各个维度数据值可以当做一个集合,A和B的杰卡德系数为:J(A,B)=同维度且维度值相同的个数/总维度数=1/4。

还有一个很有意思的思路,把A和B的两个向量当做两个数组,那么每一列的最小值之和就是两个集合的交集,每一列的最大值之和就是两个集合的并集。

文本相似度

很多文章说杰卡德系数可以用来比较文本相似度,但是杰卡德系数只考虑文本所包含的词的比例,不能衡量词频的差异,所以文本的相似度计算还是余弦相似度更合适。

参考:

Jaccard Index

相似度计算之Jaccard系数

你可能感兴趣的:(算法,分类算法)