6

私は現在、Amazonのような製品の推奨事項を生成するシステムに取り組んでいます:「これを購入した人はこれも購入しました。」

現在のシナリオ:

  • クライアントのGoogleAnalyticsデータを抽出し、データベースに挿入します。

  • クライアントのWebサイトでは、製品ページのロード時にAPI呼び出しが行われ、表示されている製品の推奨事項を取得します。

  • APIはリクエストとして製品IDを受信すると、データベースを検索し、(アソシエーションルールを使用して)推奨される製品IDを取得し、それらを応答として送信します。

  • これらの製品IDのリストは、クライアント側で製品の詳細(画像、価格など)を取得するために処理され、Webサイトに表示されます。

  • 現在、AmazonEC2でgapiパッケージとRESTapiストレージを備えたPHPとMYSQLを使用しています。

私の質問は次のとおりです。 さて、次の中から選択する必要がある場合は、上記の概念を実装するための最良の選択になります。

  • SimpleDBまたはBIGQueryを使用したPHP。

  • BIGQueryを使用したR言語。

  • RHIPE-(Rおよびhadoop)とSimpleDB。

  • ApacheMahout。

助けてください!

4

2 に答える 2

2

制約はかなり特殊化されているため、これに答えるのはそれほど簡単ではありません。

ただし、次の考慮事項があります。

  1. BIGQueryはまだ公開されていません。したがって、使用ベースが小さい場合、プレビュー人口に含まれていても、改善に関するアドバイスを得るのは難しくなります。
  2. それぞれの回答は、モデリングシステムとストレージシステムについて尋ねました。Apache Mahoutはストレージメカニズムではないため、必ずしもそれ自体で機能するとは限りません。以前は、その機械学習の実装はいくつかのGoogle Summer of Codeのパスティーシュだと信じていましたが、コメント投稿者の提案でその見解を更新しました。それでも、さまざまなアルゴリズムのカバレッジがかなり不均一でむらがあるように見えます。また、コンポーネントがどのようにサポートまたは保守されているかは特に明確ではありません。私は、マハウトの伝道者がこれに取り組むことを勧めます。

その結果、これにより、1番目、2番目、および4番目のオプションが削除されます。

私がよくわからないのは、HadoopとRHIPEを利用するためのリアルタイムサーバーの必要性です。これは、リアルタイムではなく、推奨モデルを開発するためのバッチ処理で実行する必要があります。RHIPEを、クエリを実行するための単純なワンストップフロントエンドとして使用できると思います。

パッケージとモデルをプリロードできるので、RHIPEの代わりにRApacheを使用することをお勧めします。フロントエンドでHadoopを使用することに利点はありませんが、モデルのフィッティングには非常に自然なバックエンドシステムになります。

(更新1)その他のインターフェイスオプションには、RServe(http://www.rforge.net/Rserve/)および場合によってはサーバーモードのRStudioが含まれます。R / PHPインターフェースがありますが(以下のコメントを参照)、HTTPまたはTCP/IPを介してRにアクセスする方が良いと思います。

(更新2)プロセス全体に対処するために、私が見る基本的な考え方は、PHPからデータをクエリしてRに渡すか、R内からクエリを実行する場合は、コメント内のリンク(OmegaHatツールへのリンク)を確認することです。 )またはR&SimpleDBに関する新しい質問を投稿してください-SOの他の誰かが、この特定の接続についてより良い洞察を与えることができると確信しています。RApacheを使用すると、パッケージがロードされ、データがRAMに格納された状態ですでに準備されている多くのRプロセスをインスタンス化できます。したがって、予測に使用する必要のあるデータを渡すだけで済みます。新しいデータが小さなベクトルの場合、RApacheは問題ないはずです。これは、リアルタイムで処理されているデータにとって正しいようです。

于 2011-08-19T23:10:18.857 に答える
1

データベース内のデータに基づく推奨のためのリアルタイムAPIが必要な場合、ApacheMahoutはこれを直接行います。ReloadFromJDBCDataModelモジュールで、を使用し、その上に配置しGenericItemBasedRecommender、サーブレットベースのラッパーを使用しますexamples。コードに慣れてニーズに合わせてカスタマイズするには、おそらく1日か2日の作業ですが、非常に簡単です。

約1億のデータポイントを超えると、計算Hadoopの分散を検討する必要があります。それはかなり複雑です。Mahoutには、カスタマイズ可能な分散型レコメンダーもあります。

于 2011-08-20T06:16:31.750 に答える