我正在使用协作过滤构建推荐引擎。对于相似性得分,我使用Pearson相关性。在大多数情况下,这是很好的选择,但有时我的用户只共享1或2个字段。例如:

User 1{
a: 4
b: 2
}

User 2{
a: 4
b: 3
}


由于这仅是2个数据点,因此Pearson相关将始终为1(直线或完全相关)。显然这不是我想要的,所以我应该使用什么值呢?我可以丢弃所有这样的实例(相关性为0),但是我的数据现在确实很稀疏,我不想丢失任何东西。我是否可以使用与我的其余相似度分数(全部为Pearson)相符的相似度分数?

最佳答案

您可能要考虑使用余弦相似度而不是Pearson相关。它没有这个问题,并且在推荐系统文献中得到广泛使用。

Herlocker等人描述的规范解决方案。 “基于邻域的协同过滤算法中设计选择的经验分析”中的“解决方案”是“抑制” Pearson相关性,以纠正使用小共同评分集的用户之间过高的相关性。基本上,您将Pearson相关性乘以1和cc / 50中的较小者,其中cc是两个用户都已评分的项目数。结果是,如果它们至少有50个共同点,则相似之处是原始的Pearson。否则,将根据它们共有的额定项目数线性缩放。它将1的伪相关变为0.02的相似度。

可能需要根据您的域和系统调整50个。

您也可以使用余弦相似度,它不会以相同的方式受到此限制。然而,对于用户-用户CF,皮尔逊相关性通常是首选。

更新:在最近的工作中,我们发现基于用户CF的余弦相似度被过早地消除了。当对归一化数据执行余弦相似度时(在计算余弦相似度之前,先从每个评分中减去用户的均值-结果与Parson相关性非常相似,不同之处在于它具有内置的自阻尼项),其性能优于Pearson。一个“标准”环境。当然,如果可能的话,您应该对自己的数据和环境进行一些测试,以查看哪种方法最有效。此处的纸张:http://grouplens.org/node/479

免责声明:我是实验室中的学生,他制作了上述Herlocker论文。

08-24 21:02