2011-05-03 114 views
2

我的網站上的用戶和頁面都有ID。當用戶進入某個頁面上,他們的用戶ID和的pageID將被寫入到一個MySQL表爲這樣:構建簡單的推薦引擎

userID | pageID 
    3 | 1 
    2 | 1 
    3 | 2 
     etc... 

在此表中,稱爲user_pages,我最終會得到一堆原始數據,可以變成推薦引擎。我的意思是推薦引擎 - 我想分析歷史數據,並能夠基於一組瀏覽過的頁面預測用戶可能喜歡的下一頁。假設在訪問ID爲4,9,15的頁面之後,訪問頁面與ID 3之間具有強烈的相關性。如果用戶進入頁面4,9和15,則引擎應該推薦第3頁。

我想我有創建這個所需的所有數據輸入代碼。我將如何編寫一些分析數據以進行頁面關聯(即幾乎每個訪問過頁面5的人都訪問過頁面1),並以某種方式使用它來預測用戶可能最終喜歡的頁面?

回答

7

推薦系統是A.I研究的重要組成部分。我相信你對協同過濾算法集合感興趣。自2007年Netflix獎以來,該領域發展很快。我會建議去here並閱讀。它以簡潔明瞭的方式解釋了推薦系統的基本概念,並提供了鏈接到Netflix項目MemReader的Java源代碼。您可以檢查此源代碼並推斷構建推薦引擎的基本算法。

或者,如果你想對所採用的算法進行更加數學的解釋,請去here

它應該不會花太長時間才能實現。

+0

也爲開源協同過濾項目可用來部署,去http://www.manageability.org/blog/stuff/open-source-collaborative-filter-in-java – GordyD 2011-05-03 21:40:53

+0

根本沒有理由編輯只是爲了增加幾個字符並將其提高 – dynamic 2011-06-19 22:55:54

+0

我編輯了這個答案來改進格式並突出顯示關鍵術語。 – GordyD 2011-06-19 23:10:57

1

這篇文章提出了一個類似的問題:Advanced MySQL: Find correlations between poll responses

我認爲你將能夠產生類似的反應,如果你的主數據表中它有一個附加字段,最後使用的訪問或頁面的具體的ID隨即訪問。

事情是這樣的:

+------+----------+--------------+----------+ 
| id | page_id | next_page_id | user_id | 
+------+----------+--------------+----------+ 
| 1 | 1  | 1   | 1  | 
| 2 | 1  | 2   | 2  | 
| 3 | 1  | 2   | 3  | 
| 4 | 1  | 2   | 4  | 
| 5 | 2  | 3   | 1  | 
| 6 | 2  | 3   | 2  | 
| 7 | 2  | 3   | 3  | 
| 8 | 2  | 4   | 4  | 
| 9 | 3  | 5   | 1  | 
+------+----------+--------------+----------+ 

那麼你應該能夠使用SQL查詢的一個修改後的版本建議那裏產生的高相關建議在當前頁和下一頁之間的列表。