java - 用户与当前数据匹配

标签 java matching mahout

我有一个包含两种不同类型用户(导师和受训者)的数据库,我希望第二组(受训者)能够“搜索”第一组(导师)中与其个人资料相匹配的人。导师和学员都可以随时进入并更改其个人资料中的项目。

目前,我正在使用 Apache Mahout 进行用户匹配 (recommender.mostSimilarIDs())。我遇到的问题是每次有人搜索时我都必须重新加载用户数据。就其本身而言,这不会花费那么长时间,但当 Mahout 处理数据时,它似乎需要很长时间(3000 名导师和 3000 名学员需要 14 分钟)。处理后,匹配只需几秒钟。在处理过程中,我也一遍又一遍地收到相同的 INFO 消息(“已处理 2248 个用户”),而查看代码显示该消息只应每 10000 个用户输出一次。

我正在使用 GenericUserBasedRecommender 和 GenericDataModel,以及 NearestNUserNeighborhood、AveragingPreferenceInferrer 和 PearsonCorrelationSimilarity。我从数据库加载导师,将学员添加到 POJO 列表并将它们转换为 FastByIDMap 以提供给 DataModel。

有没有更好的方法来做到这一点?产品所有者需要每次搜索的数据都是最新的。

最佳答案

(我是作者。)

你不应该每次都要求它重新加载数据,这是为什么呢?

14 分钟听起来很不错,加载如此少量的数据也太长了,出了点问题。您可以通过 user@mahout.apache.org 了解更多信息。

您正在查看来自 DataModel 的日志消息,您可以在您选择的日志系统中禁用它。它打印一个最终计数。这没什么好担心的。

我建议您不要使用 PreferenceInferrer 除非您绝对知道自己需要它。你真的有收视率吗?如果不是,我可能会建议 LogLikelihoodSimilarity

关于java - 用户与当前数据匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574929/

相关文章:

java - 如何将javafx中TextArea的isUndoable属性设置为true?

algorithm - 对于无序序列匹配问题,什么样的算法比较好?

java - 启用 Maven 与 eclipse 集成的步骤

hadoop - 在hadoop上运行mahout的fpg算法作为集群模式

python re.search(正则表达式)只搜索具有 {{world}} 模式的单词

java - Apache mahout 推荐器 - 我应该为每个用户重新创建数据模型吗?

java - 如何设置 'Cache-control: no-store' IMB Liberty

java - Spring LDAP 错误代码 32 - 没有这样的对象];剩余名称 '/' "

java - 返回 ArrayList<file> 方法 java

ruby-on-rails - 与属于命名空间 Rails 4 的资源相关联的匹配