Mahout:(快速性能)如何将首选项写入文件?

Mahout: (fast performance) how to write preferences to file?

我有一个训练数据集,其中包含来自 6000 名用户对 3900 部电影的评分的 800.000 条记录。 这些存储在逗号分隔的文件中,例如:userId,movieId,preference。 我有另一个数据集(200.000 条记录),格式为:userId,movieId。我的目标是使用第一个数据集作为训练集,以确定第二个数据集缺失的偏好。

到目前为止,我成功加载了训练数据集并生成了基于用户的推荐。这非常顺利,不会花费太多时间。但是在写回建议时我很挣扎。

我尝试的第一个方法是:

有效,但速度非常慢 (我添加了一个计数器以每 10.000 次迭代打印一次:几分钟后它只打印一次。我有 8GB-RAM使用 i7 核...处理 200.000 行需要多长时间?!)

我的第二个选择是:

这里我遇到了几个问题:

  1. 在运行时:java.lang.UnsupportedOperationException(我发现hereFileDataModel实际上无法更新。我不知道为什么函数setPreference存在于第一名...)
  2. setPreferenceAPI 表示 "This method should also be considered relatively slow."

我读到一个解决方案是使用 delta 文件,但我无法找出它的实际含义。关于如何加快编写首选项过程的任何建议?

请注意,我是 Mahout 和推荐系统的新手,所以请使用外行术语 ;)

您确定问题出在写入结果上吗?在我看来,真正的问题是使用基于用户的推荐系统。

例如,对于如此小的数据集,基于搜索的推荐系统将能够在不到一毫秒的时间内提出建议,并且可以并行提供多个建议。这应该可以让您在几分钟内在一台机器上完成 200,000 个推荐。

对于如此小的数据集,基于指标的方法可能不是最佳选择。要改进这一点,请尝试使用更大的数据集,例如百万歌曲数据集。参见 http://labrosa.ee.columbia.edu/millionsong/

此外,如果您想建立一个真正的推荐系统,使用和估计评级并不是一件特别好的事情。

最后,有关 Mahout 的问题最好发给 Mahout 邮件列表本身。