Mahout 推荐器、Flink、Spark MLLib、'gray box'

Mahout recommender, Flink, Spark MLLib, 'gray box'

我是 Mahout-Samsara 的新手,我正在尝试了解不同项目的 "domain" 以及它们之间的相互关系。 我了解到 Apache Mahout-Samsara 弃用了许多 MapReduce 算法,并且这些算法将基于 Apache Flink 或 Spark 或其他引擎,如 h2o(基于 "Apache Mahout: Beyond MapReduce" 书中的介绍)。

我想尝试一些推荐算法,但我不太确定什么是新的,什么是 'deprecated'。我看到以下链接,

参考spark-rowsimilarityspark-itemsimilarity。 (我不明白这些链接是在谈论一种独立的算法还是一种设计……这可能是一种设计,因为它们没有在 mahout dot apachedot org/users/basics/algorithms.html 中列出。 .. 无论如何...)。

同时,Apache Flink(或者是Spark MLLib?)实现了推荐的ALS算法(Machine Learning for Flink and Spark MLlib)。

一般问题:

有助于对话的其他链接:

具体问题:

Spark-itemsimilarity 和 spark-rowsimialrity 是命令行可访问的驱动程序。它们基于 Mahout-Samsara 中的 类。这些描述适用于自 v0.10.0 以来支持的 运行 代码。

link https://mahout.apache.org/users/basics/algorithms.html 显示 "compute-engine" 支持哪些算法。 "Mapreduce" 列中的任何内容都符合弃用要求。

也就是说,Mahout-Samsara 不像 0.10.0 之前的 Mahout 那样是算法的集合。它现在有一个类似 R 的 DSL,其中包括广义张量数学,大多数 Mahout-Samsara 算法都是从中构建的。因此,请将 Mahout 视为 "roll-you-own math and algorithm" 工具。但是每个产品都可以根据您选择的计算引擎进行扩展。引擎本身也可以本地使用,因此您不必仅使用抽象的 DSL。

关于 Mahout-Samsara 与 MLlib 或任何算法库的关系,它们之间会有重叠,两者都可以在您的代码中互换使用。

关于推荐系统,新的 SimilarityAnalysis.cooccurrence 实施了一项重大创新,称为交叉出现,它允许推荐系统吸收几乎所有关于用户或用户上下文的已知信息,甚至可以考虑项目内容的相似性。 Mahout-Samsara 部分是相关交叉事件的引擎。请参阅此处描述算法的一些幻灯片:http://www.slideshare.net/pferrel/unified-recommender-39986309

使用成熟的 PredictionIO 框架(PIO 本身现在是拟议的 Apache 孵化器项目)有一个完整的端到端实现,可以使用以下说明进行安装:https://github.com/actionml/cluster-setup/blob/master/install.md

我已经在 Flink 上研究 ML 有一段时间了,我正在做我公平的侦察工作,我正在监控这个生态系统中发生的事情。您要问的是根本不存在的项目之间的合理协调。算法一遍又一遍地重新实现,就我所见,这样做比与不同的框架集成更容易。 Samsara 它实际上是最便携的解决方案之一,但它只适用于少数应用程序。

Is it that these algorithms from mahout.apache.org are deprecated and they are being migrated to Flink / Spark MLLib, so that the ML library and support at Flink / Spark MLLib will grow?

正如我所说,这需要项目之间的协调,这不是一回事。

Is Flink / Spark MLLib intended to be more an engine or engine + algorithm library with good support for the algorithms?

他们应该是理想生态系统中的第一件事,但他们会继续为商业目的构建自己的 ML 库:开箱即用的带有 ML 库的计算引擎卖得很好。事实上,我全职致力于 Flink ML 并不是因为我相信它一定是在 Flink 上进行 ML 的最佳方式,而是因为,现在,它是 Flink 需要在许多环境中销售的东西。

@pferrel 建议 PredictionIO 是一款出色的软件,但有许多替代品正在开发中:例如 Beam 正在设计机器学习 API 以概括不同运行器的实现(Flink、Spark、H2O 和很快)。另一种选择是数据分析平台,如 Knime、RapidMiner 等,它们可以在 Spark 或其他大数据工具上构建管道。