【问题标题】:Most effective similarity measure for list-ranked items列表排序项目的最有效相似性度量
【发布时间】:2012-10-07 17:11:44
【问题描述】:

我们试图找出项目(和后来的用户)之间的相似性,其中项目按用户在各种列表中排名(想想Hi Fidelity 中的 Rob、Barry 和 Dick)。给定列表中较低的索引意味着较高的评级。

我认为标准方法是使用 Pearson 相关性,然后以某种方式反转索引。

但是,据我了解,Pearson 相关性的目的是补偿通常对事物评分较高或较低但相对评分相似的用户之间的差异。

在我看来,如果列表是连续的(尽管长度是任意的),那么从该位置隐含的评级就会以这种方式出现偏差,这不是问题。

我想在这种情况下,基于欧几里得的相似性就足够了。是这样吗?使用 Pearson 相关性会产生负面影响并找到不合适的相关性吗?哪种相似性度量可能最适合此数据?

此外,虽然我们希望列表中的位置有效,但我们不想惩罚相差太远的排名。两个用户都在一个列表中展示了一个排名非常不同的项目,仍然应该被认为是相似的。

【问题讨论】:

    标签: mahout recommendation-engine collaborative-filtering


    【解决方案1】:

    Jaccard Similarity 在您的情况下看起来更好。要包括您提到的排名,您可以采用一袋项目的方法。

    使用您的 (Rob, Barry, Dick) 示例,它们的评分分别为 (3,2,1),您将 Rob 插入此用户 a 的包中 3 次。

    Rob, Rob, Rob.
    

    那么对于Barry,你做两次。当前包如下图,

    Rob, Rob, Rob, Barry, Barry.
    

    你终于把Dick放进了包里。

    Rob, Rob, Rob, Barry, Barry, Dick
    

    假设另一个用户b有一个[Dick, Dick, Barry]的包,你计算Jaccard相似度如下:

    • ab 的交集 = [Dick, Barry]
    • ab 的联合 = [Rob, Rob, Rob, Barry, Barry, Dick, Dick]
    • Jaccard 相似度 = 2/7,

    即交集的项目数除以并集的项目数。

    这种相似性度量确实会惩罚相距甚远的排名。你可以看到:

    两个用户都在一个列表中展示了一个排名非常不同的项目,仍然应该被认为是相似的。

    【讨论】:

      【解决方案2】:

      最知名的仅基于排名的相似性指标是Spearman's correlation。它只是将“1”分配给第一项,将“2”分配给第二项,依此类推,并计算(Pearson)相关系数。 (您也可以使值下降,这更直观——与 Pearson 的相关性无关。)

      Spearman 的相关性在项目中实现了,但是,我认为它不是很有用。

      Tau rank 是一种更原则性的衡量排名列表匹配程度的方法,但尚未实施。不会很难的。

      【讨论】:

      • 我对 Tau 等级很感兴趣。它看起来确实很完美,但我担心它的复杂性。因为您必须比较所有可能的项目配对,所以每个用户配对还有很多工作要做。也许它会在更密集的数据集中受到影响?
      • 只考虑每个用户评分最高的项目,或者随机抽样适度数量的对,应该很快给出一个合理的近似值。我对这个指标没有实际经验,只是我的猜测。
      猜你喜欢
      • 1970-01-01
      • 2015-01-22
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      相关资源
      最近更新 更多