Мне нужно получить пользовательские рекомендации с помощью graphaware, и я не знаю, как это сделать. Насколько я понимаю, все, что я получаю от neo4j-reco от graphaware, — это сходство предметов, как в «люди, которые купили a, также купили b». Но что меня интересует, так это рекомендации пользователей, такие как «рекомендовано для вас на основе ваших предыдущих покупок». Любая идея, как это сделать?
как получить пользовательские рекомендации с помощью graphaware neo4j-reco
Ответы (1)
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
Другой подход, который вы можете комбинировать с этим, заключается в том, чтобы найти людей, купивших те же товары, что и пользователь, и найти то, что они также купили. Затем вы создадите другой движок со следующим запросом:
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 Spark для переноса процесса вычисления сходства за пределы из neo4j jvm и записать результаты/взаимосвязи в neo4j (не с открытым исходным кодом)