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

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

谢谢

【问题讨论】:

    标签: mysql algorithm grails groovy


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2010-11-06
      • 1970-01-01
      • 2023-03-25
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2021-12-11
      • 1970-01-01
      相关资源
      最近更新 更多