12

数値 ID (本に関連する) のリストを取得して保存し、それらを大量の同一 ID を持つ他のユーザーと比較し、それらの検索結果に基づいて追加の本を推奨する基本的なレコメンデーション エンジンを作成しようとしています。

少しグーグルした後、この記事を見つけました。これは、Slope One アルゴリズムの実装について説明していますが、比較対象のアイテムを評価するユーザーに依存しているようです。理想的には、ユーザーが評価を提供する必要なく、これを実現したいと考えています。ユーザーがこの本を自分のコレクションに持っている場合、彼らはそれを気に入っていると思います。

各本にデフォルトで 10 の評価を付けることができると思いますが、使用できるより効率的なアルゴリズムがあるかどうか疑問に思っています。理想的には、これらの推奨事項をオンザフライで計算したいと思います (バッチ計算を避けます)。任意の提案をいただければ幸いです。

4

3 に答える 3

11

タスクの基本的なアルゴリズムは、協調的なメモリベースのレコメンダーシステムです。特に、アイテム(ケースブックの場合)にIDがあり、他の機能がない場合は、実装が非常に簡単です。

しかし、あなたがすでに言ったように、あなたはアイテムのためにユーザーからのある種の評価を必要とします。ただし、1〜5つ星のような評価ではなく、0(本を読んでいない)や1(本を読んでいる)のようなバイナリの選択、またはに興味がある、または興味ないなどの評価を考えてください。

次に、適切な距離測度を使用して、すべてのユーザー(およびそのアイテムのセット)と自分自身の差を計算し、(アクティブユーザーが誰であれ)自分に最も類似したn人のユーザーを選択し、評価していないアイテムを選択します(または考慮して、選択肢0)。

この場合、適切な距離測度は1ノルム距離、またはマンハッタン距離と呼ばれることもあると思います。ただし、これは、最良の結果を得るには、データセットを試してみる必要があるポイントです。

このトピックの良い紹介は、Breese et al。による論文、協調フィルタリングのための予測アルゴリズムの経験的分析ですこちらから入手できます(PDF)。研究論文としては、読みやすいです。

于 2011-01-27T22:11:11.127 に答える
2

Apriori アルゴリズムは、ユーザーが関心を持っているアイテムのセットに基づいて推奨事項を提供できます。ユーザーが 1 回の注文で購入したアイテム、ユーザーがこれまでに購入したアイテム、ユーザーが好意的にコメントしたアイテム、ユーザーが詳細に調査したアイテムなど、興味深いセットの独自の概念を定義する必要があります。

Apriori アルゴリズムはバッチ処理を必要としますが、バッチ処理を必要としない改善点が存在します。これらは AprioriTid と AprioriHybrid です (申し訳ありませんが、リンクはありません)。

于 2010-12-21T19:15:38.973 に答える
0

@ndgそれは非常に洞察力があり、この分野で働く人として、〜{0,1}評価システムに相当するものを使用するのは正しいと思います。星評価の違いのほとんどは単なるノイズです。「いいね!」で {0,1,2} を許可できます。ボタンですが、ユーザーはそのようなボタンの使用に一貫性がないため、選択肢を制限することをお勧めします。Hotpot を使用すると、ユーザーは 10 個のスーパー プラス ラブを使用できるため、一貫性が保たれます。

私のアドバイスは、あまりにも広いブラシ ストロークでペイントすることに注意することです。言い換えれば、普遍的なアルゴリズムは最も単純ですが、日和見主義になる機会を逃します。

よく知っている小規模なデータ セット (友人にサイトを利用してもらうなど) を取り上げて、ユーザー距離の評価にプラスまたはマイナスの影響を与える可能性のあるすべての要因に注意してください。次に、モデリング プロセスで、どの要素をどのように/どの程度にするかを決定する必要があります。

ノルムの数は、曲線の数とほぼ同じであることに注意してください。また、準規範、疑似規範、さらには非連続規範を検討することもできます。

マンハッタン ノルムを使用する理由はわかりません。実際、グラフベースのノルムを使用してユーザー間の距離を計算します。

于 2011-03-05T06:06:19.837 に答える