如果我有以下用户,他们观看的电影具有以下评分:
User1 Movie1-5 Movie2-4
User2 Movie2-5 Movie2-3 Movie3-4
User3 Movie1-4 Movie2-4 Movie4-4
Run Code Online (Sandbox Code Playgroud)
我如何使用协同过滤向 user1 推荐 movie3 以及如何计算 user1 给 movie3 4 或更好的概率?
小智 5
使用协同过滤生成推荐有几种不同的方法,我将解释基于用户和基于项目的协同过滤方法。这些方法在推荐算法中使用最多。
基于用户的协同过滤
这基本上计算了用户之间的相似度。相似性可以是皮尔逊相关性或余弦相似性。还有更多相关数,但这些是最常用的。这篇文章很好地解释了如何计算它。
基于用户的过滤确实面临一些挑战。首先是数据稀疏问题,当电影很多而评论很少时就会出现这种情况。这使得计算用户之间的相关性变得困难。这个维基百科页面对此进行了更多解释。
其次是可扩展性问题。当数百万用户拥有数千部电影时,计算用户之间相关性的性能将会大幅下降。
基于项目的协同过滤
此方法与基于用户的过滤不同,因为它计算电影之间的相似度而不是用户之间的相似度。然后,您可以使用这种相似性来预测用户的评分。我发现这个演示文稿很好地解释了这一点。
基于项目的过滤器的性能优于基于用户的过滤器,但它们也遇到相同的问题,但要少一些。
基于内容的过滤
看到您的数据后,很难生成推荐,因为来自用户的数据太少。我建议使用基于内容的过滤器,直到您有足够的数据来使用协作过滤方法。这是一种非常简单的方法,基本上查看用户的个人资料并将其与电影的某些标签进行比较。本页对此进行了更详细的解释。
我希望这能回答您的一些问题!