スタートアップ製品の一部として、「類似ユーザー機能」を計算する必要があります。そして、豚を使うことにしました。私は数日間豚を学んでいて、それがどのように機能するかを理解しています。ここから始めるのは、ログファイルがどのように見えるかです。
user url time
user1 http://someurl.com 1235416
user1 http://anotherlik.com 1255330
user2 http://someurl.com 1705012
user3 http://something.com 1705042
user3 http://someurl.com 1705042
ユーザーと URL の数が膨大になる可能性があるため、ここではブルートフォース アプローチを使用できません。まず、少なくとも共通の URL にアクセスできるユーザーを見つける必要があります。
アルゴリズムは次のように分割できます。
- いくつかの一般的な URL にアクセスしたすべてのユーザーを検索します。
- アクセスされたリソースごとに、すべてのユーザーのペアごとの組み合わせを生成します。
- と URL の各ペアについて、それらのユーザーの類似性を計算します。類似性は、アクセス間の時間間隔に依存します (したがって、時間を追跡する必要があります)。
- 各ペア URL の類似度を合計します。
ここに私がこれまでに書いたものがあります:
A = LOAD 'logs.txt' USING PigStorage('\t') AS (uid:bytearray, url:bytearray, time:long);
grouped_pos = GROUP A BY ($1);
まだそれほど多くはないことはわかっていますが、ペアを生成する方法やさらに先に進む方法がわかりません。そのため、どんな助けもいただければ幸いです。
ありがとう。