【学习笔记】Jaccard相似度和广义Jaccard相似度
来源:互联网 发布:tensorflow下word2vec 编辑:程序博客网 时间:2024/04/27 13:52
1. 狭义Jaccard相似度,计算两个集合之间的相似程度,元素的“取值”为0或1
对集合A和B,Jaccard相似度计算如下:
Jaccard(A, B)= |A intersect B| / |A union B|
相似度数值在[0, 1]之间,当A==B的时候,为1. 优缺点,就是元素的取值只能是0或者1,无法利用更丰富的信息。
由相似度,可以转换成Jaccard距离:
Jaccard distance (A, B) = 1 - Jaccard(A, B)
2. 广义Jaccard相似度,元素的取值可以是实数。又称为Tanimoto系数,用EJ来表示,计算方式如下:
EJ(A,B)=(A*B)/(||A||^2+||B||^2-A*B)
其中A、B分别表示为两个向量,集合中每个元素表示为向量中的一个维度,在每个维度上,取值通常是[0, 1]之间的值,A*B表示向量乘积,||A||^2表示向量的模,即 ||A||^2 = sqrt (a1^2 + a2^2 + a3^2 + ......)。
广义Jaccard相似度计算公式中,如果把分母的A*B去掉,并将||A||^2+||B||^2替换为(||A||^2)*(||B||^2),就转成了余弦相似度(cosine similarity)。
EJ中每个分量的取值可以是实数,通常在[0, 1]之间。对于两篇文档,分词之后,形成两个“词语--词频向量”,词语可以做为EJ的维度,如何将词频转换为实数值。借鉴tf/idf的思路。对于每个词语,有两个频度:1.在当前文档中的频度;2. 在所有文档中的频度。其中1相当于tf,与权重正相关;2相当于df,与权重反相关。
对于2,计算权重为
idf (w) = log (TotalWC/C(w))
C(w)是词语w在所有文档中出现的次数,TotalWC是所有文档中所有词的总词频。
对于1,权重就可以取词频本身 tf(w) = D(w),D(w)表示在当前文档中w出现的次数。
具体计算的代码可以参考 “http://www.cnblogs.com/TtTiCk/archive/2007/08/04/842819.html”的Documents.cs中的“SimilitudeValueToDocumentUsingGeneralizedJaccardCoefficient”函数。
3. 其他扩展方法
文章“http://www.docin.com/p-461291267.html”给出了一种扩展方法,用最大最小值函数来代替乘积和模计算,如下:
EJ(A,B) = sum ( min(a1, b1) + min (a2, b2)... ) / sum ( max(a1, b1) + max (a2, b2).. )
即用向量中每个分量的的最小值和最大值来参与计算。
个人理解,这个可以做如下解释。当集合A中的元素a1出现C(a1)次的时候,我们可以认为集合中的元素是允许重复存在的,即集合A中有C(a1)个元素;集合B也是这样,有C(b1)个相同的元素,则A和B在这个元素上的交集就是min(a1, b1) ,并集就是max(a1, b1) ,这样上述公式就是利用狭义Jaccard相似度计算的结果。
参考文献:
wiki:http://en.wikipedia.org/wiki/Jaccard_similarity
http://blog.csdn.net/knzeus/article/details/6319137
http://www.cnblogs.com/TtTiCk/archive/2007/08/04/842819.html 有代码示例
http://www.cnblogs.com/live41/archive/2010/01/03/1638222.html
http://www.docin.com/p-461291267.html
- 【学习笔记】Jaccard相似度和广义Jaccard相似度
- Jaccard相似度和广义Jaccard相似度
- Jaccard相似度和广义Jaccard相似度
- Jaccard相似度和广义Jaccard相似度
- 文本相似度计算--余弦定理和广义Jaccard系数
- 文本相似度计算--余弦定理和广义Jaccard系数
- 计算歌曲相似度:Jaccard系数
- 推荐算法之Jaccard相似度与Consine相似度
- Jaccard相似系数和皮尔逊相关系数
- Jaccard相似度、minHash、Locality-Sensitive Hashing(LSH)
- 文档的Jaccard相似度, MinHash, 及MinHash签名
- 自己理解的Jaccard相似度算法实现
- Jaccard相似度在竞品分析中的应用
- 数据挖掘_基于jaccard的相似度算法
- 分别用matlab和python计算物品相似度矩阵(Jaccard系数
- 文档的相似度(1)--Jaccard相似度与文档的shingling
- jaccard利用Minhash和LSH寻找相似的集合
- 文本相似度计算的几个距离公式(欧氏距离、余弦相似度、Jaccard距离、编辑距离)
- 操作系统面试题目
- 占位
- 网络层ip
- 自己用的key
- concepts阅读总结4——事务
- 【学习笔记】Jaccard相似度和广义Jaccard相似度
- 数据库面试题目
- AUTHORITY-CHECK
- 破解 远程桌面 无法连接本地
- firefox 与IE 对 js获取当前年份的兼容问题
- hdu 1787 GCD again
- hdu2108 Shape of HDU
- jquerymobile-21 jquerymobile默认配置
- 利用XStream在Java对象和XML之间相互转换