java - 实现推荐算法

标签 java recommendation-engine collaborative-filtering

好吧,所以我想用 Java 实现一个协作过滤算法,类似于 Netflix 或 StumbleUpon 的推荐算法,但是我不确定是否应该在数据库上进行所有计算( PIL 逊相关、预测计算等) ,或者我是否应该加载所有必要的数据并在 Java 中执行算法。

我认为在 java 中执行此操作的主要缺点是我必须加载所有数据,相反,我认为在数据库中执行此操作会导致非常复杂且容易出错的查询。

每种可能性还有哪些其他优点或缺点?

我正在实现的算法可以找到here .

最佳答案

虽然我还没有阅读该算法的所有细节,但出于多种原因,我倾向于在代码中实现实际的算法。首先,您可以利用这些经过充分测试的算法的现有实现(或至少部分实现)。正如您所提到的,将此逻辑添加到数据库可能很复杂并且更难以测试。此外,如果您更改存储引擎或格式,代码可能会与数据库紧密耦合,从而难以重用。

如果你用java做算法,你将不得不从数据库中读取数据,这可能会导致内存中存在大量数据。不过,您需要确保这不会成为限制因素 - 您是否需要一次读取所有数据(这意味着在某些时候 RAM 将成为限制),或者您可以对数据进行分块并并行化操作?如果您可以并行化算法的某些部分,那么用 Java(或您选择的任何语言)编写代码将使分割数据变得更容易(如果问题适合该框架,您甚至可以考虑使用 Map/Reduce 框架 - 再次在这里,我尚未阅读算法详细信息)。

一般来说,我会尝试将业务逻辑排除在数据库之外。

关于java - 实现推荐算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711660/

相关文章:

java - 如果已知 UTC 的日期和该时区的时间,如何知道该时区的日期?

machine-learning - 协同过滤可以应用于疾病检测吗?

machine-learning - 基于 MLlib 项目的无评级协同过滤

python - Apache Spark ALS - 如何执行实时推荐/折叠匿名用户

java - 单击时如何更改 JButton 上的图像?

java - JFrame 的内容转换为 JPanel

java - 在Java中切换对象数组中的最小值和最大值

algorithm - 如何建立电影推荐系统?

hadoop - 我可以在hadoop上使用基于用户的推荐吗?

neo4j - 使用密码查找子图中未连接到指定节点的节点