2016-11-27 105 views
0

我需要使用graphaware獲得基於用戶的建議,我不知道該怎麼做。據我所知,我所看到的從graphaware的neo4j-reco中得到的所有東西都與「買了一個也買了b的人」中的項目相似。但我感興趣的是基於用戶的建議,如「基於您以前的購買建議給您」。任何想法如何做到這一點?如何使用graphaware獲得基於用戶的推薦neo4j-reco

+0

我有點好奇,你如何看待這樣一個系統的工作,如果它沒有提到其他人買了你已經買了相同東西的人?如果它所引用的唯一信息是您自己的,那麼除了之前購買的產品之外,它還能真正推薦您什麼? – InverseFalcon

+0

我想你可以推薦來自同一製造商的其他產品或來自其他製造商的類似產品。對於Neo4j來說,這應該很容易,儘管您需要使用圖表來跟蹤物品的類型以及製造商。不過,這是一大堆建議,這就是爲什麼用信息來補充這一點很有用的原因,比如其他人購買了與你的消費者類似的東西。 – InverseFalcon

+0

hm,讓我試着澄清一下。自述文件。neo4j-reco的md給出了一個'FriendsComputingEngine'的例子,我可以計算我可能知道的人,因爲我們共享一些共同的朋友。我想知道的是:如果我們有兩個實體,用戶和項目以及每個用戶都可以「喜歡」幾個項目,那麼我將如何根據他已經「喜歡」的項目獲得針對特定用戶的推薦。 –

回答

3

GraphAware-Reco主要是幫助您在neo4j數據庫之上構建企業級推薦引擎的框架。

這意味着它提供了需要用自己的邏輯擴展自己的基類和體系結構。

如果您考慮購買歷史,採用非常天真的方式開始使用,例如可以找到所購買產品的特性。

比方說,用戶1購買的iphone和ipad的,能有這些特點:

iphone brand : apple, category: electronics 
ipad brand: apple, category: electronics 

您可以創建第一發動機將匹配基於這些特點的潛在候選人,這款發動機將延長CypherEngine用下面的查詢:

MATCH (n:User {id: 111})-[:PURCHASED]->(product) 
WITH distinct product 
MATCH (product)-[:HAS_CHARACTERISTIC]->(c)<-[:HAS_CHARACTERISTIC]-(reco) 
RETURN reco, count(*) AS score 

另一種方法,你可以用這個組合是找人被買同樣的項目,如用戶找到他們也買了,那麼你將創造另一個ENGIN e使用以下查詢:

MATCH (n:User {id: 111})-[:PURCHASED]->(product) 
WITH distinct product, user 
MATCH (product)<-[:PURCHASED]-(collab) 
WHERE collab <> user 
MATCH (collab)-[:PURCHASED]->(reco) 
RETURN reco, count(*) AS score 

當使用這兩個引擎時,GraphAware Reco會自動將每個引擎的分數合併爲一個。

您可以在測試中發現一個CypherEngine的例子:https://github.com/graphaware/neo4j-reco/blob/master/src/test/java/com/graphaware/reco/neo4j/engine/CypherEngineTest.java

您還可以添加黑名單不建議用戶已經購買的物品。正如我所說的,這是第一步,如果您有大量購買的大目錄,您可能會考慮進行後臺計算(例如,產品之間的相似性,並且只涉及它們之間的頂級k-nn產品)對於採購和它們之間的相關相似的用戶),您

GraphAware-Reco提供設施有後臺計算工作,GraphAware-Reco-Enterprise附帶的項目,以及一個Apache星火一體化之間的相似度計算預先定義的算法外移動的相似度計算過程的neo4j jvm並將結果/關係寫回neo4j(非開放源代碼)