19

タグ駆動型の電子商取引環境に使用するのにどのアルゴリズムが賢明か疑問に思っています。

  • 各アイテムにはいくつかのタグがあります。いいえ:

    アイテム名:「メタリカ - ブラック アルバム CD」、タグ:「メタリカ」、「ブラック アルバム」、「ロック」、「音楽」

  • 各ユーザーには、いくつかのタグとフレンド (他のユーザー) がバインドされています。いいえ:

    ユーザー名: "testguy"、興味: "python"、"ロック"、"メタル"、"コンピューター サイエンス" フレンド: "testguy2"、"testguy3"

興味タグをチェックし、洗練された方法で推奨事項を生成することにより、そのようなユーザーへの推奨事項を生成する必要があります。

アイデア:

  • 各ユーザーに友人がいる場合は、ハイブリッド推奨アルゴリズムを使用できます (共同推奨とコンテキスト ベースの推奨の混合)。
  • おそらくユーザータグを使用して、同様のユーザー (ピア) を見つけて、レコメンデーションを生成できます。

  • おそらく、タグを介してユーザーとアイテムの間でタグを直接照合します。

どんな提案でも大歓迎です。Python 言語でこの実験的なエンジンを実行するため、Python ベースのライブラリも歓迎します。

4

5 に答える 5

18

1) タグに重みを付けます。

タグは、いくつかの重要なグループに分類されます。

  • 友達が共有していない私のタグ
  • 多くの友人が共有するタグを付けますが、私はしません
  • 多くの友達が共有している私のタグ。

(友達の友達タグも検討したい場合がありますが、私の経験では、その努力は価値がありませんでした.YMMV.)

その人および/またはその人の友人が興味を持っているすべてのタグを特定し、この個人のタグに重みを付けます。タグの重みの簡単な式は次のとおりです。

(tag_is_in_my_list) * 2 + (friends_with_tag)/(number_of_friends)

マジック ナンバー 2 に注意してください。これにより、自分の意見は、友達全員の意見を合わせた 2 倍の価値があります。自由に微調整してください:-)

2) アイテムの重量を量る

リスト内のいずれかのタグを持つアイテムごとに、タグの加重値をすべて合計します。値が高い = 関心が高い。

3) しきい値を適用します。

最も簡単な方法は、上位n 件の結果をユーザーに表示することです。

より洗練されたシステムでは、アンチタグ (つまり、興味のないトピック) を適用したり、他の多くのことを行ったりしますが、この単純な式が効果的で迅速であることがわかりました。

于 2010-05-12T00:55:17.630 に答える
5

可能であれば、Toby Segaran による O'Reilly の Programming Collective Intelligence のコピーを見つけてください。まさにこの問題に対するモデル ソリューションがあります (本当に、本当に優れた他のものがたくさんあります)。

于 2010-05-13T11:30:05.977 に答える
0

DroolsのPython セマンティック モジュールを使用して、 Python スクリプト言語でルールを指定できます。これは、Drools を使用して簡単に実現できます。これは、いくつかの推奨エンジンを解決するために使用した素晴らしいルール エンジンです。

于 2010-05-15T18:12:51.567 に答える
0

あなたの問題は、よく知られている Amazon のサイトなどの製品レコメンデーション エンジンに似ています。これらはアソシエーション ルールと呼ばれる学習アルゴリズムを使用します。これは基本的に、ユーザーと製品の間の共通の特徴 Z に基づいて、ユーザー X が製品 Y を購入する条件付き確率を構築します。OrangeWekaなど、多くのオープン ソース ツールキットがアソシエーション ルールを実装しています。

于 2010-05-13T13:59:30.747 に答える
0

制限付きボルツマン マシンを使用します。類似しているが同一ではないタグの問題をうまく回避します。

于 2011-03-14T04:37:46.020 に答える