5

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

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

但是,据我了解,皮尔逊相关性的目的是补偿通常对事物进行更高或更低但具有相似相对评分的用户之间的差异。

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

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

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

4

2 回答 2

3

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

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

Rob, Rob, Rob.

然后对于Barry,你做两次。当前的包如下所示,

Rob, Rob, Rob, Barry, Barry.

Dick终于放进了袋子里。

Rob, Rob, Rob, Barry, Barry, Dick

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

  • a和之间的交集b=[Dick, Barry]
  • ab=的并集[Rob, Rob, Rob, Barry, Barry, Dick, Dick]
  • Jaccard 相似度 = 2/7,

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

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

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

于 2012-10-30T05:14:18.693 回答
2

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

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

Tau 排名是衡量排名列表匹配程度的更原则性指标,但尚未实施。这并不难。

于 2012-10-30T07:07:57.283 回答