2017-08-27 15 views
0

Mahoutの0.13.0/javaの8Mahoutの上の勧告がスパーク書き方

私はMahoutの中に完全に新しいですし、Mahoutのを使用してリコメンデーション・エンジンを実装する方法を理解しようとしています。

  1. 協調フィルタリング(非Hadoopのもと)
  2. 分類(Hadoopのもと)
  3. クラスタリング(Hadoopのもと)
  4. コンテンツ - これまでのところ、私が知っている..

    Mahoutのは、フィルタリングの3種類を提供しますベースのフィルタリング

私の最初の勧告の実装を開始するには、私はCollaborative filtering w hachはHadoopなしで簡単に実装できます。

協調フィルタリング -

  1. ユーザー基づき勧告
  2. 項目に基づく勧告
  3. スロップ1
  4. といくつかのより多くの...

Mahoutのインタフェース:

1 .DataModel 2. UserSimilarity 3. ItemSimilarity 4. UserNeighborhood 5.推薦

Iは、そのコンポーネントを理解し、類似点と近傍の複数の組み合わせを使用して、ユーザとアイテムベースの推薦を書かれています。

質問:地図-削減に基づく協調フィルタリング以来

  1. 、Mahoutのは0.13.0リリースでは完全に地図-削減廃止していますか?すべての共同フィルタリングアルゴリズムは廃止されましたか?その代わりに何がありますか? Map-ReduceはSparkに比べてパフォーマンスが遅いため、Sparkですか?
  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スパークはスタンドアロンApache Sparkと異なりますか?私はスタンドアロンのApache Sparkと一緒に行くことも考えています。

誰かが私を明確にしてください。

答えて

1

1)マップReduceは0.10.0で完全に廃止されました。 「新しいMahout」は数学的に表現力豊かなScala DSLで、エンジンから抽象化されています。同じScalaコードがFlink/Spark/Other Enginesのためにコンパイルできるはずです。はい、これはパフォーマンスに基づいていました。

2)Java APIで多くの作業が行われていませんが、作業している人がいると聞いています。

3.)私はあなたがJavaでSpark勧告エンジンを書くことができるかどうか尋ねていると思います。答えは「はい」です。しかし、実際には、私はscala/Javaの間で多くの移植を行っていませんが、理論的には、あなたのJavaコードにScalaの関数/クラスをインポートするだけで済むはずです。 This Linkにはscratchで書いたreccomenderについてもう少し詳しく説明していますが、それはScalaにありますが、それをJavaに移植する必要があります(そうするなら自由にPRを開いてください) 。

4.)はい、できます。 This Linkは、ZeppelinでMahoutを使ってSparkをセットアップする方法を説明しましたが、プリンシパルはどのセットアップでも同じままです(たとえば、必要なジャンパーや、あなたが調整する必要があるものはです)。iirc、mahout-spark、mahout-数学 - スカラ。 (spark-dependency-reduced、ZeppelinやMahout Spark Shellなどのローカルシェルプログラムのみを使用する必要があります)。

5.)はい、MahoutはSparkまたは他の分散エンジンで動作するライブラリです。

+0

お返事ありがとうございます@rawkintrevo。 SparkでSolrをデータソースとして使用することも可能ですか? –

+0

あなた自身の推薦者を書くなら、何かをデータソースとして使うことができ、SolrはSparkの読み書き可能なライブラリを提供します。 – pferrel

+0

SolrをSpark RDDとして読む:https://github.com/lucidworks/spark-solr – rawkintrevo

1

実際、新しい推奨アルゴリズム@rawkintrevoは、Universal Recommenderと呼ばれるApache PredictionIOに基づくエンドツーエンドのターンキーシステムに存在します。 PIOにはJava SDKが付属しています。いくつかのリンク:種々installation instructionsintegrated UR

  • ため

    • Universal Recommender project
    • のGithub上のドキュメントは、 an AWS AMIプリインストールとで実験するように構成さがあることに気づきます。他の方法のいくつかは、よりスケーラブルな展開を行う方法を示しています。 URのため
    • Apache PredictionIO docs
    • OSSコミュニティのサポートはhereで、PIOはhereです。

    Apache Mahout、Apache PredictionIO、Spark、およびUniversal RecommenderはScalaで書かれています。 URにはJavaへのポートがありますが、これは維持されておらず、必要なすべてのオプションが設定パラメータとして公開されており、非常によく文書化されているので、実際には必要ありません。

    リアルタイムでデータを送信してリアルタイムのクエリを作成することで、通信する方法は、簡単なREST呼び出しや、Javaを含むPIO SDKを使用したものです。

    URは、マルチモーダルデータ(多くの異なるユーザーインジケータまたはイベントを使用)に基づいて、ユーザーベースのアイテムベースのショッピングカート(アイテムセットベース)、推奨をサポートしています。また、豊富な一連のビジネスルールもサポートしています。

    データを入力して設定し、設定を決定する必要はありません。残りはインストールと設定です。

  • +0

    ありがとう@pferrel。私は推薦に関連する1つの一般的な質問があります。どの推奨フレームワークでも、訓練データを使用してマシンを何度も訓練する必要がありますか?はいの場合、ここでマシンを訓練するポイントは何ですか。私はマシンがトレーニングセットで十分成熟したと仮定していますが、一定の期間トレーニングをしなくても新しい推奨を求めることができます。 –

    +0

    モデルは、モデルが再トレーニングされていない限り、カタログに追加された新しいアイテムを考慮することができません。一般に、訓練期間はアイテムが追加される頻度に比例します。ニューストレーニングは1日に数回行うことができます。固定在庫のため、新しいユーザーに味のバリエーションが追加され、数ヶ月ごとに追加される場合があります。典型的な電子商取引推薦者の場合、新しい商品が購入、買取、閲覧などのやりとりをするための時間を与えるために、週に1回かもしれません。 – pferrel