什么是应用于建议书的预测函数使用Tanimoto Coefficient for Item-based CF

时间:2015-05-21 18:51:40

标签: java similarity recommendation-engine mahout-recommender collaborative-filtering

我构建了一个使用基于项目的协同过滤的推荐系统。但是我有一个预测函数的问题我不知道在使用Tanimoto Coefficient(Jaccard相似系数)?计算不同项目(电影)之间的相似性时可以使用哪个函数。以下示例可以解释我的问题。让我们假设User1观看了电影1,当我们计算电影1和所有其他电影之间的tanimoto系数时,我们发现前5个类似的电影是527,595,608,1097和588。其中每个电影都有它与电影1的相似性。遵循:

用户:1

Watched Movie---Similar Movie----Tanimoto Coefficient score
          1--------527-------- = 0.33242
          1--------595-------- = 0.3377
          1--------608-------- = 0.3523
          1--------1097-------- = 0.3619
          1--------588-------- = 0.42595

那么计算相似度后的下一步是什么?拜托,我需要帮助。

PS:我发现用户1观看了所有前5名(527,595,608,1097和588),因此不能将其视为推荐电影。

非常感谢

1 个答案:

答案 0 :(得分:2)

首先,在两种方法中 - 用户对用户和项目到项目我们已经定义了两个功能:相似性预测相似度为您测量两个实体彼此之间的距离(用户或项目)。在你的情况下 - Tanimoto被选中。您缺少的是预测功能。因为你有最近的实体(在i2i - 项目中)你必须预测评级值(或隐含的用户反馈 - 做一些事情)。最简单的形式是使用加权平均函数,其中权重是相似性度量:

enter image description here

应仅针对用户未分配的项目计算平均值。对于使用item2item的特定用户,这是最简单的推荐生成之一。

快速举例。评级矩阵如R:

我们试图预测用户1和第1项的评分。 Tanimoto相似性度量用于以下计算。

enter image description here

因此我们预测用户1会给出第1项评级:4/5。

出于性能原因,我们保留了大多数前N个类似项目的索引,但这些项目对于将要生成推荐的用户来说应该是新的。