我构建了一个使用基于项目的协同过滤的推荐系统。但是我有一个预测函数的问题我不知道在使用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),因此不能将其视为推荐电影。
非常感谢
答案 0 :(得分:2)
首先,在两种方法中 - 用户对用户和项目到项目我们已经定义了两个功能:相似性和预测。 相似度为您测量两个实体彼此之间的距离(用户或项目)。在你的情况下 - Tanimoto被选中。您缺少的是预测功能。因为你有最近的实体(在i2i - 项目中)你必须预测评级值(或隐含的用户反馈 - 做一些事情)。最简单的形式是使用加权平均函数,其中权重是相似性度量:
应仅针对用户未分配的项目计算平均值。对于使用item2item的特定用户,这是最简单的推荐生成之一。
快速举例。评级矩阵如R:
我们试图预测用户1和第1项的评分。 Tanimoto相似性度量用于以下计算。
因此我们预测用户1会给出第1项评级:4/5。
出于性能原因,我们保留了大多数前N个类似项目的索引,但这些项目对于将要生成推荐的用户来说应该是新的。