2017-08-27 138 views
0

亨利马乌0.13.0/JAVA 8如何写亨利马乌推荐星火

我在Mahout中全新的,并试图了解如何使用Mahout的实现推荐引擎。到目前为止,我知道..

亨利马乌提供了3种类型的过滤 -

  1. 协同过滤(非Hadoop的基础)
  2. 分类(基于Hadoop的)
  3. 聚类(Hadoop的基础)
  4. 内容基于过滤

要开始实施我的第一个建议,我开始使用协作过滤w这很容易在没有Hadoop的情况下实现。

协同过滤 -

  1. 基于用户的建议
  2. 项目基于建议
  3. 趿拉着一个
  4. 和一些更多...

亨利马乌接口:

1 .DataModel 2. UserSimilarity 3. ItemSimilarity 4. UserNeighborhood 5.推荐器

我理解它的部件,并使用相似性和附近的多个组合有书面基于用户和项目推荐。

问:

  1. 由于协同过滤基于映射简化,是否亨利马乌弃用0.13.0版本完全的map-reduce?是否所有协作过滤算法都被弃用?什么是替代呢? Spark是否因为与Spark相比Map-Reduce性能较差?
  2. 我查过,Mahout也提供SparkFlink的支持。 Mahout spark提供2种类型的过滤 - >火花项目相似度火花行相似度。但我还没有找到任何基于Java的示例来创建java中的建议。
  3. 可能是Mahout Spark与Scala有更好的兼容性,但是我们可以在Java中编写基于火花项目相似度和火花行相似度的推荐引擎吗?建议一些例子。
  4. Mahout Spark可以在没有Hadoop的情况下独立运行?到目前为止,我知道Spark是Hadoop的替代品,我们可以在其中进行实时处理。我需要添加什么库,除了mahout-spark_2.10-0.13.0.jarmahout-spark_2.10-0.13.0-dependency-reduced.jar?
  5. Mahout spark与独立Apache Spark不同吗?我正在考虑单独使用Apache Spark。

可有人请澄清我。

回答

1

1)Map Reduce在0.10.0中已完全弃用。 “新Mahout”是一种数学表达Scala DSL,从引擎中抽象出来 - 例如相同的Scala代码应该能够编译为Flink/Spark/Other Engines。是的,这是基于性能。

2)没有发生过很多的Java API来完成的工作,但我听说有一些人做这个工作。

3.)我想你问你是否可以用Java编写Spark推荐引擎。答案是肯定的。但是的确,我的意思是,我没有在scala/Java之间进行很多移植,但理论上你应该能够将Scala函数/类导入Java代码中? This Link展示了一些关于从零开始编写一个reccomender的过程 - 尽管它是在Scala中,你需要将它移植到Java中(如果你这样做,可以随意打开一个PR,我们将它作为一个例子) 。

4.)是的,它可以。 This Link描述如何建立与星火Mahout的在飞艇,但校长保持不变的任何设置(例如,其罐子你需要,你需要调整什么SparkConf) IIRC,您需要Mahout的火花,象夫,数学,mahout-数学阶。 (火花依赖减少,你只需要使用本地shell程序,例如Zeppelin或Mahout Spark Shell)。

5.)是的,Mahout是一个运行在Spark或其他分布式引擎上的库。

+0

感谢@rawkintrevo为您解答。你能否让我也知道是否可以在Spark中使用Solr作为数据源? –

+0

如果你编写你自己的推荐器,你可以使用任何东西作为数据源,Solr提供一个Spark读/写库。 – pferrel

+0

将Solr读作Spark Spark RDD:https://github.com/lucidworks/spark-solr – rawkintrevo

1

其实新的推荐存在于基于Apache PredictionIO一个终端到端到端交钥匙系统算法@rawkintrevo挂在嘴边称为通用导购。 PIO附带一个Java SDK。有些链接:

Apache Mahout,Apache PredictionIO,Spark和Universal Recommender都是用Scala编写的。 UR具有到Java的端口,但这不会被维护,因为您可能需要的所有选项都作为配置参数公开并且它有很好的文档记录,所以这不是必需的。

您实时发送数据,从而可以实时查询,交流的方式是通过简单的REST调用或使用一个PIO的软件开发工具包,其中包括Java的。

的UR支持基于用户的,基于项目的,购物推车(基于项目的设置),基于多模态数据的建议(使用许多不同的用户指标或事件)。它还支持一套丰富的业务规则。

没有必要写任何东西,但输入您的数据并决定配置,其余的是安装和设置。

+0

谢谢@pferrel。我有一个与推荐相关的通用问题。在任何推荐框架中,我们是否需要一次又一次地训练训练数据,如果是的话,那么在这里训练机器有什么意义。我假设一旦机器已经足够成熟,我们可以简单地在一段时间内再次询问新的推荐,而无需再次进行培训。 –

+0

该模型不能考虑添加到目录中的新项目,除非该模型被重新培训。一般来说,培训时间与项目添加的频率成正比。对于新闻培训可能每天几次,对于一个固定的库存,它可能只是随着新用户的口味变化而添加,因此每隔几个月。对于一个典型的电子商务推荐人来说,每周可能需要花费一些时间让新项目获得一些互动(购买,阅读,观看等)。 – pferrel