2

我正在用真实用户数据实现电影推荐系统。我计划采取协作过滤方法。但是,这种方法通常需要一个巨大的矩阵来存储用户的额定电影。因为我有超过一万部电影和十万用户。我不可能创建这样一个巨大的稀疏矩阵。我想知道每个人如何通过如此大量的数据实施协作过滤?谢谢!带有大量数据的推荐系统

+0

一个巨大的*稀疏*矩阵有什么问题?这应该是很好的。 – 2013-03-12 18:16:55

+0

矩阵非常庞大,我无法在我的matlab中创建矩阵。可以用其他语言解决吗? – 2013-03-13 01:53:31

回答

3

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

Apache Mahout包含Taste协作过滤库,它旨在在一台机器上进行缩放。一个模型 - 什么,10M数据点? - 应该适合记忆与健康的堆大小。看看像GenericItemBasedRecommenderFileDataModel。 (基于亨利马乌也有分布实现Hadoop的,但我不认为你需要这个呢。)

我的那个作者,但此后移动作为商业化大规模引荐Myrrix。它还包含一个独立的单机版,这是免费的,并且open source。它也可以在一台机器上轻松处理这些数据。例如,这是比在this example中使用的数据集更小的数据集。 Myrrix也有一个分布式实现。

还有其他的快速分布式以上的实现,如GraphLab。其他非分布式框架也可能足够快,如MyMediaLite

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

0

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