【问题标题】:Mahout recommender, Flink, Spark MLLib, 'gray box'Mahout 推荐器、Flink、Spark MLLib、“灰盒”
【发布时间】:2016-05-14 17:41:56
【问题描述】:

我是 Mahout-Samsara 的新手,我正在尝试了解不同项目的“领域”以及它们之间的关系。 我知道 Apache Mahout-Samsara 弃用了许多 MapReduce 算法,并且事情将基于 Apache Flink 或 Spark 或其他引擎,如 h2o(基于“Apache Mahout:超越 MapReduce”一书的介绍)。

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

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

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

一般问题:

  • 是不是这些来自 mahout.apache.org 的算法被弃用了,它们正在被迁移到 Flink/Spark MLLib,所以 Flink/Spark MLLib 的 ML 库和支持会增长?

  • Flink / Spark MLLib 是否打算成为一个引擎或引擎+算法库,对算法有很好的支持?

有助于对话的其他链接:

具体问题:

  • 我想尝试将推荐算法作为“灰盒”(部分是“黑盒”,因为我不想深入研究数学,部分“白盒”,因为我想调整模型和数学到我需要改进结果的程度)。

  • 我对其他 ML 算法还不感兴趣。我考虑从现成的东西开始,然后更改 MLLib 的 ALS 实现。那会是一个好方法吗?还有其他建议吗?

【问题讨论】:

    标签: apache-spark apache-flink mahout-recommender


    【解决方案1】:

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

    是不是这些来自 mahout.apache.org 的算法被弃用了,它们正在被迁移到 Flink/Spark MLLib,所以 Flink/Spark MLLib 的 ML 库和支持会增长?

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

    Flink / Spark MLLib 是打算成为一个引擎或引擎+算法库,对算法有很好的支持吗?

    它们应该是理想生态系统中的第一件事,但它们会继续为商业目的构建自己的 ML 库:开箱即用的 ML 库的计算引擎非常畅销。实际上,我全职从事 Flink ML 工作,并不是因为我认为这一定是在 Flink 上进行 ML 的最佳方式,而是因为现在,它是 Flink 需要在许多环境中销售的东西。

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

    【讨论】:

      【解决方案2】:

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

      链接https://mahout.apache.org/users/basics/algorithms.html 显示了哪些“计算引擎”支持哪些算法。 “Mapreduce”列中的任何内容都可以弃用。

      也就是说,Mahout-Samsara 不像 0.10.0 之前的 Mahout 那样是一组算法。它现在有一个类似 R 的 DSL,其中包括广义张量数学,大部分 Mahout-Samsara 算法都是基于该数学构建的。因此,可以将 Mahout 视为“滚动你自己的数学和算法”工具。但是每个产品都可以根据您选择的计算引擎进行扩展。引擎本身也可以在本地使用,因此您不必只使用抽象的 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

      【讨论】:

      • 谢谢你,帕特,这确实很有趣。 - 使用关于项目和用户的“结构化”数据的部分很有趣。是否有文章或帖子可以让我阅读有关其背后数学的更多详细信息? - 在训练期间频繁地重新计算这些矩阵似乎不是最理想的。我在哪里可以找到有关一些强化学习方法的更多信息?有没有办法改变 Universal Recommender 以使用强化学习?
      • 实际上很少需要频繁地重新计算模型。经验法则是在您将项目添加到目录时重新计算。因为实时用户历史记录用于提出建议,除非目录发生变化,否则模型几乎不会发生变化。这里的数学:actionml.com/blog/ur_algo_slides
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2018-02-04
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      相关资源
      最近更新 更多