gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:42:24 26 4
gpt4 key购买 nike

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

到目前为止,我成功加载了训练数据集并生成了基于用户的建议。这非常顺利,不需要太多时间。但在写回建议时我遇到了困难。

我尝试的第一个方法是:

  • 从文件中读取一行并获取 userId,movieId 元组。
  • 使用 estimatePreference(userId, movieId) 检索计算出的偏好
  • 将首选项附加到该行并将其保存在新文件中

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

我的第二个选择是:

  • 使用第二个数据集创建新的 FileDataModel
  • 做这样的事情:

    newDataModel.setPreference(userId, movieId,Recommender.estimatePreference(userId, movieId));

这里我遇到了几个问题:

  1. 运行时:java.lang.UnsupportedOperationException(我发现hereFileDataModel实际上无法更新。我不知道为什么函数setPreference首先存在...)
  2. API setPreference 指出“此方法也应该被视为相对较慢。”

我读到解决方案是使用增量文件,但我无法找出这实际上意味着什么。关于如何加快我的偏好设置过程有什么建议吗?

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

最佳答案

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

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

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

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

最后,有关 Mahout 的问题最好通过 Mahout 邮件列表本身来解决。

关于java - Mahout:(快速性能)如何将首选项写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29423824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com