問題タブ [mahout-recommender]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mahout - Mahout の事前計算されたアイテム間の類似性 - 遅い推奨
Mahout で事前に計算されたアイテム間の類似性でパフォーマンスの問題が発生しています。
400 万人のユーザーがほぼ同じ量のアイテムを持っており、約 1 億のユーザー アイテムの好みがあります。ドキュメントの TF-IDF ベクトルのコサイン類似度に基づいて、コンテンツ ベースのレコメンデーションを行いたいと考えています。これをオンザフライで計算するのは遅いため、次のように、最も類似した上位 50 のドキュメントのペアごとの類似性を事前に計算しました。
- 以前
seq2sparse
は TF-IDF ベクターを作成していました。 - 以前
mahout rowId
は mahout マトリックスを作成していました - mahout を使用
rowSimilarity -i INPUT/matrix -o OUTPUT -r 4587604 --similarityClassname SIMILARITY_COSINE -m 50 -ess
して、最も類似した上位 50 の文書を作成しました
Hadoop を使用して、これらすべてを事前計算しました。400 万アイテムの場合、出力はわずか 2.5 GB でした。
次に、レデューサーによって生成されたファイルのコンテンツを をCollection<GenericItemSimilarity.ItemItemSimilarity> corrMatrix = ...
使用して読み込みdocIndex
、ドキュメントの ID をデコードしました。それらはすでに整数でしたが、rowId は 1 からデコードしたので、元に戻さなければなりません。
推奨事項として、次のコードを使用します。
限られたデータ モデル (160 万アイテム) で試していますが、すべてのアイテム間の類似性をメモリにロードしました。40GBを使用してメインメモリにすべてをロードすることに成功しました。
一人のユーザーにレコメンドしたい時
レコメンデーション プロセスの経過時間は554.938583083
数秒であり、レコメンデーションは生成されませんでした。今、私は推薦のパフォーマンスについて本当に心配しています. CandidateItemsStrategy
との数字で遊んでみましたがMostSimilarItemsCandidateItemsStrategy
、パフォーマンスの向上は見られませんでした。
レコメンデーション プロセスを高速化するために想定されるすべてを事前計算するという考えではありませんか? 誰かが私を助けて、どこが間違っているのか、何が間違っているのか教えてください。また、パーワイズの類似性をメイン メモリにロードすると、指数関数的に爆発するのはなぜですか? Collection<GenericItemSimilarity.ItemItemSimilarity>
mahout matrix?では、40GB のメイン メモリに 2.5GB のファイルがロードされました。ファイルはIntWritable
、VectorWritable
hashMap キー値を使用してシリアル化され、ItemItemSimilarity
マトリックス内のすべてのベクトル値に対してキーを繰り返さなければならないことはわかっていますが、これは少し多すぎると思いませんか?
前もって感謝します。
hadoop - hadoop 2.0 の mahout をコンパイル/使用するにはどうすればよいですか?
最新リリースの mahout 0.9 は、hadoop 1.x 上にのみ構築されています。(mvn クリーン インストール) hadoop 2.0.x 用に mahout をコンパイルするにはどうすればよいですか?
コマンドを実行していたとき:
hadoop jar mahout-examples-0.9-SNAPSHOT-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURENCE -i テスト -o 結果
私はいつもエラーメッセージを受け取りました
IncompatibleClassChangeError: インターフェース org.apache.hadoop.mapreduce.JobContext が見つかりましたが、クラスが予期されていました。
ありがとう!
mahout - アイテムの親子関係を表現/重み付けする Myrrix タグ付け API
Item-Item 'similarity' スコアを計算できるようにするために、Tagging API を使用してアイテムにタグを付けています。 22}、そのようなこと。それはうまくいっています。
私がやりたいのは、アイテムとアイテムの「関係」を表すことです。したがって、私のアプリケーションが 1 が 2 の親であると言う場合 (そして、もう少し複雑にするために、これはマルチレベルです)、 Myrrix にこれら 2 つのアイテムを少し近づけるように指示できるようにします。
私の最初の解決策は、「PARENT_[name]」タグを各アイテムに追加し、親ごとに「PARENT_[parentname]」タグを追加することでした。階層が上がるにつれて重みが低くなります。それは、親子を近づけることに成功しました。
残念ながら、提案の全体的な品質は少し低下したように見え、結果はますます変化するように見えました。たとえば、インポートを再度実行すると、結果は完全にランダムに見えます。これは機能/ラムダレベルで修正できるものですか?
「機能」が何を表しているのかはまだはっきりしていませんが、可能なタグの数を大幅に増やすことで、モデルを非常に異なる方法で構成する必要があるのではないかと疑っています...
java - Mahout - レコメンダー エバリュエーターが 0.0 を返す
申し分なく、私はMahoutとJavaに非常に慣れていません。レコメンダーを評価しようとしていますが、以下のコードは、使用する距離測定やクラスター サイズに関係なく、毎回 0.0 を返します。明らかに、トレーニング データとテスト データがまったく分割されていません。その理由はわかりません。
このコードに関するヘルプは大歓迎です!
ありがとうございました!
machine-learning - 1対多の関連付けを持つエンティティに対して推奨を実行する方法はありますか?
ユーザーとアイテムが 1 対多で関連付けられている特定のユース ケースのレコメンデーション システム (学問的演習) を試しています。ある時点で、特定のアイテムを 1 人のユーザーしか所有できないとします。ユーザーは一度に複数のアイテムを所有できます。特定のアイテムには、所有しているユーザーが興味を持つ可能性のある多くの類似アイテムがあります。アイテムを見つけてユーザーにおすすめしたい。通常、ユーザー ベースのレコメンデーションでは、エンティティは多対多の関連付けになります。ユーザー U1 がアイテム I1、I2、I3 を所有し、ユーザー U2 がアイテム I1、I2、I3、I4 を所有している場合、I4 を U1 に推奨します。私の場合、一度に 1 人のユーザーだけが 1 つのアイテムを所有できます。この場合の推奨の実行方法。ユーザーベースのレコメンドは可能ですか?
machine-learning - コンテンツ ベースのレコメンデーションのための mahout アイテム ベースのレコメンデーションのカスタマイズ
私は自分の e コマース サイト (服/T シャツの販売) のレコメンデーションを行おうとしています。ウェブサイトに関連するレビューや評価はありません。ユーザーは、製品を気に入って、プロファイル設定にキーワード (例: ラウンド ネック、ポロ、カジュアル、ジーンズ、パーティー ウェアなど) を追加して、好みをカスタマイズできます。
類似度の計算中にユーザーの製品の好みを含めるように mahout アイテム ベースのレコメンダーをカスタマイズしようとしています。ItemSimilarity インターフェイスには、アイテム間で比較するためのメソッドしかありません。ユーザーの好みが製品の属性と一致する場合にブーストを追加できるように、類似性を計算しているユーザーの情報/属性が必要です。基本的に、ユーザーの属性と製品の属性を一致させ、類似値を変更するために計算を行います。同じことを説明する記事やチュートリアルはありますか? mahout を使用してこれを実現する方法を誰かが説明してくれると、本当に助かります。コンテンツベースのレコメンデーションを行う他のライブラリはありますか? よろしくお願いします。
text - Lucene/solr/mahout によるテキスト推奨
記事/ニュース推奨エンジンを実装する必要があるプロジェクトに取り組んでいます。いろいろな方法(アイテムベース、ユーザーベース、モデルCF)を組み合わせようと考えているのですが、使用するツールについて質問があります。
私の調査によると、Lucene は間違いなくテキスト処理のツールですが、レコメンデーションの部分については、それほど明確ではありません。テキストの類似性に基づいて記事にアイテム CF を実装したい場合:エンジン)、検索の問題に本当に近いので、solrの方が良いと思いますよね?- 2 つのツールの時間処理の違いは何ですか (Mahout はバッチ処理と Solr リアルタイム処理が多いと思います) - Lucene からテキストの距離を直接取得できますか (Lucene と比較して solr の付加価値が何であるかは明確ではありません)。- より高度な方法 (行列因数分解に基づくモデル) については、Mahout を使用しますが、solr にコンセプト/タグを発見するための SVD のような機能はありますか?
ご協力いただきありがとうございます。
web-services - Mahout レコメンデーションを Web サービスとして公開する
ユーザーにアイテムを推奨するasp.netアプリケーションを構築しています。人気があるため Mahout を使用することにしましたが、Mahout レコメンダーを Web サービスとして公開して、自分の Web アプリまたは後で開発できるモバイル アプリで使用できるようにしたいと考えています。
Mahout のドキュメント ( https://cwiki.apache.org/confluence/display/MAHOUT/Recommender+Documentation ) で、これを見つけました
Mahout レコメンダーは、外部サーバーとして実行することもできます。これは、非 Java アプリケーションの唯一のオプションである可能性があります。org.apach.mahout.cf.taste.web.RecommenderServlet を介して Web アプリケーションとして公開でき、アプリケーションは単純な HTTP リクエストとレスポンスを介してレコメンデーションにアクセスできます。上記を参照し、詳細については javadoc を参照してください。
mahout を Web サービスとして公開するにはどうすればよいですか? この分野や Java サーブレットの知識はありませんが、Java SE を書いています。手伝ってくれますか ?
注 : 何百万ものユーザーを扱うつもりはないので、Hadoop は使用したくありません。また、これは私の卒業プロジェクトであり、商用製品ではありません。