2

我正在使用真实的用户数据实现电影推荐系统。我打算采用协同过滤的方法。然而,这种方法通常涉及存储用户评分电影的巨大矩阵。因为我有一万多部电影和十万用户。我不可能创建如此巨大的稀疏矩阵。不知道大家是怎么用这么大的数据实现协同过滤的?谢谢!

4

2 回答 2

4

我会向您推荐分布式计算框架,但是,我认为仍然具有您可以在一台机器上轻松处理它的规模。

Apache Mahout包含 Taste 协同过滤库,旨在在一台机器上进行扩展。一个模型——什么,10M 数据点?-- 应该以健康的堆大小放入内存中。看看 和 之类的GenericItemBasedRecommender东西FileDataModel

(Mahout 也有基于 Hadoop 的分布式实现,但我认为你还不需要这个。)

我是那篇文章的作者,但后来开始将大规模推荐器商业化为Myrrix。它还包含一个独立的单机版本,它是免费和开源的。它还可以在一台机器上轻松处理这么多的数据。例如,这是一个比本示例中使用的数据集更小的数据集。Myrrix 也有一个分布式实现。

除了上述之外,还有其他快速分布式实现,例如GraphLab。其他非分布式框架也可能足够快,例如MyMediaLite

我建议只使用其中之一,或者如果您真的只是想知道它“如何”发生,请查看源代码并查看数据表示。

于 2013-03-13T10:16:41.163 回答
0

我没有使用矩阵形式来存储我的数据。相反,我使用 C++ 并构建一些结构,例如 User、Rating、Item,其中包含我需要的变量和数组。这可能会增加算法的复杂性,但可以有效地节省内存。

于 2013-05-29T19:36:40.677 回答