计算数据集之间相似性百分比的有效方法

Posted

技术标签:

【中文标题】计算数据集之间相似性百分比的有效方法【英文标题】:Effective way to calculate a similarity percentage between data sets 【发布时间】:2011-02-11 23:39:13 【问题描述】:

我目前正在处理用户对象——每个对象都有许多目标对象。目标对象不是用户特定的,即用户可以共享相同的目标。我正在尝试设计一种方法来计算两个用户之间的“相似性百分比”......(即,考虑到他们共享多少目标以及他们不共享多少目标)有没有人有这种类型的经验情况?如果有帮助,我正在将 Grails 与 mysql 一起使用。

谢谢

【问题讨论】:

【参考方案1】:

执行此操作的标准方法是 Jaccard 相似度。如果 A 是第一个用户的目标集,B 是第二个用户的目标集,则 Jaccard 相似度为:

#(A intersect B)/#(A union B)

这是他们共享的目标数除以两人共同拥有的投票总数(计算他们仅共享一次的目标)。因此,如果第一个用户的目标 A=1,2,3 而第二个用户的目标 B=2,4 那么是这样的:

A intersect B = 2
A union B = 1,2,3,4

#(A intersect B)/#(A union B) = 1/4

Jaccard 相似度始终介于 0(他们没有共享目标)和 1(他们有相同的目标)之间,因此您可以将其乘以 100 得到一个百分比。

http://en.wikipedia.org/wiki/Jaccard_index

【讨论】:

以上是关于计算数据集之间相似性百分比的有效方法的主要内容,如果未能解决你的问题,请参考以下文章

推荐引擎:余弦相似度与测量每个向量分量之间的差异百分比

BigQuery 计算多列值之间的重叠百分比

pandas使用pct_change函数计算数据列的百分比变化:计算当前元素和前一个元素之间的百分比变化(包含NaN值的情况以及数据填充方法)

数据分析知识图谱- part1

向 OLAP 多维数据集 Mondrian 模式添加百分比

如何计算两个图像的相似度百分比,如下图我想在我的项目中实现它