我现在在尝试实现使用基于用户的协同过滤算法( user-based collaborative filtering )来进行推荐。 输入是一些用户对一些物品的评分(一个形如 userId,itemId,rating 的 csv ),输出是为每位用户列出 N 个推荐的物品
具体的过程是,先预测每位用户对“所有他没有评分过的物品”的评分,然后找出评分最高的 N 个物品作为推荐
至于预测某个用户对某个物品的评分,我看的是这篇论文(Empirical analysis of predictive algorithms for collaborative filtering)中的算法(据说是非常经典的论文)
但现在的问题是:由于每个用户只给很小一部分物品评过分,所以“预测每位用户对‘所有他没有评分过的物品’的评分”计算量非常大。即使只用训练样本中的一小部分( 10000 行数据,包含大约 100 个用户、3000 个物品),对每位用户也都要计算很久(每位用户约 1 分钟,环境是 python+i7 笔记本)
所以就想问一下这个算法应该如何改进?
初学这些知识,请多指教,谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.