2011-04-03 62 views
2

我們需要作爲我們初創產品的一部分來計算「類似用戶功能」。我們決定和豬一起去。 我已經學了幾天豬,並瞭解它是如何工作的。 所以從這裏開始就是日誌文件的外觀。摘錄來自使用hadoop/pig的日誌的類似用戶

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訪問。

該算法可以splited波紋管:

  1. 找到已訪問了一些常見的URL的所有用戶。
  2. 爲每個訪問的資源生成所有用戶的成對組合。
  3. 對於每對和url,計算這些用戶的相似度:相似性取決於訪問之間的時間間隔(所以我們需要跟蹤時間)。
  4. 總結每對-url的相似度。

這裏是我到目前爲止已經寫的:

A = LOAD 'logs.txt' USING PigStorage('\t') AS (uid:bytearray, url:bytearray, time:long); 
grouped_pos = GROUP A BY ($1); 

我知道這是不是太大呢,但現在我不知道如何生成一對或進一步移動。 所以任何幫助,將不勝感激。

謝謝。

回答

0

對於算法,請查看關於查詢/ URL二分圖的論文。這裏有幾個環節:

查詢建議使用由僑屬梅,登庸周,肯尼斯教會 http://www-personal.umich.edu/~qmei/pub/cikm08-sugg.ppt

隨機遊走在點擊圖 尼克Craswell和馬丁Szummer http://research.microsoft.com/apps/pubs/default.aspx?id=65235

七月擊中時間
+0

感謝那些偉大的文檔。這非常有用,我學到了很多東西。但是,我無法看到我可以如何使用這些算法來匹配用戶。我的目標不是建議鏈接,而是建議系統中的每個用戶根據他們擁有的兩個頁面的頁數,爲他提供最相似的一組用戶。在此先感謝您的幫助。 – clide313 2011-04-15 17:37:15

+0

在上例中,您可以創建一個二部圖,其中user1-someurl-user2和user1-someurl-user3。 someurl的邊緣權重user1爲0.5(儘管你可以在這裏包含時間來調整權重,如果你想)和0.5從user1到另一個鏈接。 userur到someurl是1.0(只訪問了一頁)。而userur到someurl是0.5(user3訪問了2頁)。添加邊緣權重後,對於user1 - > user2,您將得到1.5(2的滿分)的相似度,對於user1 - > user3,則得到1.0的相似度。這是我用上述論文提出的基本想法。 – 2011-06-08 14:35:18

3

IBM提供了一個很好的,詳細的paper,用於與MapReduce進行聯合集羣,這對您可能很有用。

Google新聞個性化paper描述了一個相當簡單的局部敏感散列實現來解決同樣的問題。

相關問題