我們需要作爲我們初創產品的一部分來計算「類似用戶功能」。我們決定和豬一起去。 我已經學了幾天豬,並瞭解它是如何工作的。 所以從這裏開始就是日誌文件的外觀。摘錄來自使用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波紋管:
- 找到已訪問了一些常見的URL的所有用戶。
- 爲每個訪問的資源生成所有用戶的成對組合。
- 對於每對和url,計算這些用戶的相似度:相似性取決於訪問之間的時間間隔(所以我們需要跟蹤時間)。
- 總結每對-url的相似度。
這裏是我到目前爲止已經寫的:
A = LOAD 'logs.txt' USING PigStorage('\t') AS (uid:bytearray, url:bytearray, time:long);
grouped_pos = GROUP A BY ($1);
我知道這是不是太大呢,但現在我不知道如何生成一對或進一步移動。 所以任何幫助,將不勝感激。
謝謝。
感謝那些偉大的文檔。這非常有用,我學到了很多東西。但是,我無法看到我可以如何使用這些算法來匹配用戶。我的目標不是建議鏈接,而是建議系統中的每個用戶根據他們擁有的兩個頁面的頁數,爲他提供最相似的一組用戶。在此先感謝您的幫助。 – clide313 2011-04-15 17:37:15
在上例中,您可以創建一個二部圖,其中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