如何使用图数据库构建实时推荐引擎

2023年08月21日 由 alex 发表 228 0

“这是给你的”,“推荐给你的”或者“你可能还喜欢”的短语在大多数数字业务中变得至关重要,特别是在电子商务或流媒体平台中。


尽管它们看起来可能很简单,但它们意味着企业与客户互动和连接的新时代:推荐时代。


坦率地说,我们大多数人,如果不是所有人,在寻找要观看的内容时都被Netflix的推荐所吸引,或者直接前往亚马逊的推荐部分看看下一步要购买什么。


在本文中,我将解释如何使用图数据库构建实时推荐引擎。


什么是推荐引擎?


推荐引擎是一种工具包,它应用高级数据过滤和预测分析来预测和预测客户的需求和喜好,即客户可能消费或参与的内容、产品或服务。


为了获取这些推荐,推荐引擎使用以下信息的组合:


1. 客户过去的行为和历史,例如购买的产品或观看的系列。


2. 客户当前的行为和与其他客户的关系。


3. 产品受到客户的评级。


4. 企业的畅销产品。


5. 类似或相关客户的行为和历史。


什么是图数据库?


图数据库是一种NoSQL数据库,其中数据存储在图结构中,而不是表格或文档中。图数据结构由节点和节点之间的关系连接组成。节点和关系都可以有自己的属性(键-值对),进一步描述它们。


下图介绍了图数据结构的基本概念:


1


流媒体平台实时推荐引擎


现在我们已经了解了什么是推荐引擎和图数据库,我们准备开始介绍如何使用图数据库构建流媒体平台的推荐引擎。


下图存储了两个客户观看的电影以及两个客户之间的关系。


1-2


将这些信息存储为图后,我们现在可以考虑通过电影推荐来影响下一部要观看的电影。最简单的策略是显示整个平台上观看最多的电影。使用Cypher查询语言可以很容易实现这一点。


MATCH (:Customer)-[:HAS_SEEN]->(movie:Movie)
RETURN movie, count(movie)
ORDER BY count(movie) DESC LIMIT 5


然而,这个查询太过于泛化,没有考虑到客户的上下文,因此对于任何特定的客户来说都没有进行优化。我们可以更好地利用客户的社交网络,查询朋友和朋友的朋友关系。使用Cypher非常简单明了。


MATCH (customer:Customer {name:'Marie'})
    <-[:IS_FRIEND_OF*1..2]-(friend:Customer)
WHERE customer <> friend
WITH DISTINCT friend
MATCH (friend)-[:HAS_SEEN]->(movie:Movie)
RETURN movie, count(movie)
ORDER BY count(movie) DESC LIMIT 5


这个查询由WITH子句分为两个部分,它允许我们将第一部分的结果传递到第二部分。


在查询的第一部分中,我们找到当前的客户({name: 'Marie'})并遍历图,匹配玛丽的直接朋友或他们的朋友(她的朋友的朋友),使用灵活的路径长度表示-[:IS_FRIEND_OF*1..2]->,这意味着深度为一或两个IS_FRIEND_OF关系。


我们要注意,不要将玛丽本人包括在结果中(WHERE子句),并且不要获取重复的直接朋友的朋友(DISTINCT子句)。


查询的第二部分与最简单的查询相同,但现在我们不再考虑平台上的所有客户,而是考虑玛丽的朋友和朋友的朋友。


就是这样,我们刚刚为流媒体平台构建了实时推荐引擎。


结论


在本文中,我们学到了以下内容:


1. 推荐引擎是什么,以及它使用多少信息来进行推荐。


2. 图数据库是什么,以及数据如何以图形而不是表格或文档的形式存储。


3. 通过使用图数据库,我们可以为流媒体平台构建实时推荐引擎的示例。






文章来源:https://www.kdnuggets.com/2023/08/build-realtime-recommendation-engine-graph-databases.html
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消