Set Jaccard距离的替代方案

Set Jaccard距离的替代方案,set,cluster-analysis,distance,information-retrieval,Set,Cluster Analysis,Distance,Information Retrieval,要计算两组单词之间的距离,我使用的是jaccard距离: JaccardDistance(A, B) = 1 - JaccardIndex(A, B) = 1 - (|A ∩ B| / |A ∪ B|) 现在我想知道,是否还有其他类似的距离度量返回值​​在[0,1]之间 其中0表示两个集合包含完全相同的元素,而1包含完全不同的元素。这两个集合的大小可能不同,单词的顺序并不重要两个集合(更一般地说,多个集合)之间最常见的距离度量是多个集合的向量表示之间的余弦距离(即角度) 现在让我们看看如何将

要计算两组单词之间的距离,我使用的是jaccard距离:

JaccardDistance(A, B) = 1 - JaccardIndex(A, B) = 1 - (|A ∩ B| / |A ∪ B|) 
现在我想知道,是否还有其他类似的距离度量返回值​​在[0,1]之间


其中0表示两个集合包含完全相同的元素,而1包含完全不同的元素。这两个集合的大小可能不同,单词的顺序并不重要

两个集合(更一般地说,多个集合)之间最常见的距离度量是多个集合的向量表示之间的余弦距离(即角度)

现在让我们看看如何将多重集合表示为向量

第一步是将每个集合表示为一个包,如果其成员

X={a,b,a,c}==>(a:2)(b:1)(c:1) Y={d,b,a,d}==>(a:1)(b:1)(d:2)

因此,每个集合表示为所有成员的并集的成员权重的稀疏向量。例如,上面示例中的成员的通用集是{a,b,c,d},并且d和c在X和Y中的隐式权重是0

使用这种稀疏表示法(可以方便地存储为hashmap),您可以计算余弦距离,即两个向量的余弦相似性的arccos(逆余弦)

对于两个向量xy,余弦相似性计算为\sum_i x_i.y_i/(|x|y),即xy的内积除以xy长度的乘积

在我们的示例中,分子计算为2x1(X和Y中构件a的重量的乘积)+1x1+1x0+2x0=3

x的长度是sqrt(2x2+1x1+1x1)=sqrt(6),很容易看出y的长度也是sqrt(6)

因此余弦距离=3/(sqrt(6)*sqrt(6))=1/2,或者换句话说,向量之间的角度为60度

注:更常见的做法是省略arccos运算,直接使用余弦相似性作为多个集合(表示为向量)之间的相似性(反距离)度量