我有一個大約700k用戶的數據庫以及他們已經觀看/收聽/閱讀/購買/等的項目。 我想建立一個推薦引擎,根據用戶喜歡什麼樣的喜好來推薦新項目,以及在我正在建立的社交網絡上真正發現用戶可能想成爲朋友的人(類似於last.fm)。查找類似項目和用戶的推薦算法(和實現)
我的要求如下:
- 在我的數據庫中的「用戶」的多數實際上並不是我的網站的用戶。它們是從第三方來源開採的數據。但是,在推薦用戶時,我想將搜索範圍限制爲我網站成員的用戶(同時仍在利用更大的數據集)。
- 我需要考慮多個項目。不是「喜歡這個你喜歡的一件物品的人......」,而是「喜歡你喜歡的大多數物品的人......」。
- 我需要計算用戶之間的相似度,並在查看他們的配置文件時顯示它們(品味度量單位)。
- 有些項目被評分,其他項目沒有。等級從1-10開始,而不是布爾值。在大多數情況下,如果它不存在(例如,如果用戶喜歡某件物品,但尚未對其進行評級,則可以從其他統計數據中扣除評級值,我可以將其評爲9)。
- 它必須以某種方式與Python代碼進行交互。最好,它應該使用一個單獨的(可能是NoSQL)數據庫,並暴露一個API用於我的網絡後端。我正在製作的項目使用Pyramid和SQLAlchemy。
- 我想考慮物品類型。
- 我想根據其流派(可能是標籤)和喜歡該項目的用戶喜歡的項目頁面(如亞馬遜的「購買此項目的人」和Last.fm藝術家頁面)顯示類似的項目。仍然會顯示來自不同流派的項目,但具有較低的相似性值。
- 我寧願有一些例子的一個有充分記錄的算法實現。
請不要給出像「使用pysuggest或mahout」的答案,因爲那些實現了大量的算法,我正在尋找一個最適合我的數據/使用的算法。我一直對Neo4j感興趣,並且如何將它全部表達爲用戶和項目之間的連接圖。
對於流派我推薦項目連接到的流派類別節點,你可以在匹配條款中考慮這些 –
這確實很方便,發佈的鏈接將信息存儲在圖形數據庫中,而不是圖形基於方法的建議。 – Steve
謝謝!我已經做了一些更多的閱讀,看看Neo4j文檔中的密碼菜譜,它完全符合我需要它做的事情。我決定採用圖形數據庫的方式來推薦我的推薦引擎。 – vomitcuddle