3

私はレコメンデーション エンジンを研究しており、共同フィルタリングに基づいて、ユーザーが興味を持つ可能性のあるニュース アイテムについて、Google ニュースがどのようにレコメンデーションをユーザーに生成するかを定義する論文を読みました。

彼らが言及している興味深い手法の 1 つは、ミンハッシングです。私はそれが何をするかを調べましたが、私が持っているのはあいまいな考えであり、間違っている可能性が高いと確信しています. 以下は、私がそれから作ることができるものです:-

  1. すべてのニュース項目のセットを収集します。
  2. ユーザーのハッシュ関数を定義します。このハッシュ関数は、すべてのニュース項目のリストで、このユーザーが表示したニュース項目から最初の項目のインデックスを返します。
  3. このような値を「n」個収集し、この値のリストでユーザーを表します。
  4. これらのリスト間の類似度数に基づいて、ユーザー間の類似度を共通項目の数として計算できます。これにより、比較の数が大幅に削減されます。
  5. これらの類似度に基づいて、ユーザーを異なるクラスターにグループ化します。

これは私がそうかもしれないと思うだけです。ステップ 2 では、定数のハッシュ関数を定義する代わりに、別の要素のインデックスを返すようにハッシュ関数を変更することができます。したがって、あるハッシュ関数はユーザーのリストから最初の要素のインデックスを返すことができ、別のハッシュ関数はユーザーのリストから 2 番目の要素のインデックスを返すことができます。したがって、最小単位の独立順列条件を満たすハッシュ関数の性質から、これは可能なアプローチのように聞こえます。

私の考えが正しいかどうか、誰か確認してもらえますか?それとも、Google ニュースのレコメンデーションのハッシュ部分は、別の方法で機能しますか? 推奨事項の内部実装は初めてです。どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1

2

近いと思います。

まず第一に、ハッシュ関数は最初にすべてのニュース項目をランダムに並べ替え、次に特定の人について最初の項目を調べます。誰もが同じ順列を持っていたので、2 人が同じ最初の項目を持つ可能性は十分にあります。

次に、新しいハッシュ関数を取得するために、2 番目の要素を選択するのではなく (最初の要素との依存関係が混乱する可能性があります)、まったく新しい順列を選択し、最初の要素を再度取得します。

たまたま同じハッシュ値を 2 回から 4 回持つ (つまり、2 回から 4 回の順列で最初の要素が同じである) 人は、クラスターにまとめられます。このアルゴリズムは 10 ~ 20 回繰り返されるため、各人は 10 ~ 20 のクラスターに分類されます。最後に、10 ~ 20 のクラスター内の (少数の) 他の人に基づいて推奨事項が提供されます。この作業はすべてハッシュによって行われるため、人々はクラスターのバケットに直接入れられ、多数の比較は必要ありません。

于 2010-04-27T18:01:33.027 に答える