現在、私たちは何を持っていますか?・MahoutのGenericItemBasedRecommenderを使って、TanimotoCoefficientSimilarityをItemSimilarityとして使用しているユーザーのおすすめ商品一覧を取得しています。
ここからどこへ行きたいですか?- 製品カテゴリを気にしない場合、上記は問題なく機能しますが、知りたいのは製品カテゴリ固有の推奨事項です。つまり、ユーザーが購入、閲覧、好みなどを行っているとします。具体的には、メンズとガジェットのカテゴリであるとします。次に、このユーザーの推奨事項をその特定のカテゴリに表示して、[X] であなたに推奨されていることを示します。この場合、X は Mens または Gadgets に置き換えられます。これを達成するために、以下のいくつかのオプションを検討しています。正しい方向に進んでいることを確認するために、いくつかのリード/意見/フィードバックなどが必要です. オプション:
- まず、アイテムの類似度を計算するために、タニモト以外のバージョンに移行する必要があります。これにより、データの表示/閲覧だけでなく、ユーザーの購入、好みなども考慮することができます。
特定のユーザー向けの製品カテゴリの把握 (ここで方向性が必要です) - 製品カテゴリ階層は基本的にツリーであり、ユーザーに表示するツリーの上位 4 つのノード (最適な推奨事項) を知る必要があります。また、ノード X がユーザーに表示するカテゴリであり、ノード Y がノード X の親である場合、カテゴリ Y またはその親のユーザー製品を表示したくありません。これを達成するいくつかの方法:
すべてのユーザーについて、リーフ レベルでノードの項目の類似性スコア値の SUM を計算し、ルートまで親ノードを再帰的に計算します。これで、各ノードに A = 類似度スコアの合計 & B = 推奨されるアイテムの数があるため、各ノードに A/B= 値 (V) もあります。次に、ツリーから上位 4 つの V 値を選択し、それをユーザーに推奨します。ここでの課題は、リクエスト中にこれをオンラインで計算しようとすると、リクエスト全体でこれを 150 ミリ秒未満に制限するのが難しいことです。例:
Root Level - Category12 (A=11, B=4) (category1 + category2) | _____________________|_________________________ / \ / \ Leaf Level - category1 (A=6, B=2) category2 (A=5, B=2)
カテゴリ 1 の推奨製品: アイテム 1 (スコア = 2)、アイテム 2 (スコア = 4)
カテゴリ 2 の推奨製品: アイテム 3 (スコア = 1)、アイテム 4 (スコア = 4)2 番目のオプション: カテゴリごとに、ユーザーの行動 (いいね、購入、閲覧など) に基づいてユーザーのクラスターを作成し、ユーザーが属する上位 4 つのカテゴリを見つけます。Mahout でクラスタリングを使用してこれを達成できるかどうかはわかりませんが、オフラインで実行できると思います。
フィードバック/提案/リード/考えを提供してください。
前もって感謝します!