【发布时间】:2011-02-11 23:39:13
【问题描述】:
我目前正在处理用户对象——每个对象都有许多目标对象。目标对象不是用户特定的,即用户可以共享相同的目标。我正在尝试设计一种方法来计算两个用户之间的“相似性百分比”......(即,考虑到他们共享多少目标以及他们不共享多少目标)有没有人有这种类型的经验情况?如果有帮助,我正在将 Grails 与 Mysql 一起使用。
谢谢
【问题讨论】:
标签: mysql algorithm grails groovy
我目前正在处理用户对象——每个对象都有许多目标对象。目标对象不是用户特定的,即用户可以共享相同的目标。我正在尝试设计一种方法来计算两个用户之间的“相似性百分比”......(即,考虑到他们共享多少目标以及他们不共享多少目标)有没有人有这种类型的经验情况?如果有帮助,我正在将 Grails 与 Mysql 一起使用。
谢谢
【问题讨论】:
标签: mysql algorithm grails groovy
执行此操作的标准方法是 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 得到一个百分比。
【讨论】: