如何使用图数据库构建实时推荐引擎
使用图数据库构建实时推荐引擎
“这是给你的”,“为你推荐的”,或者“你可能也喜欢”的短语已经成为大多数数字业务中的重要组成部分,特别是在电子商务或流媒体平台中。
尽管它们可能看起来像一个简单的概念,但它们意味着企业与其客户互动和连接的新时代:推荐时代。
让我们诚实一点,我们大多数人,如果不是所有人,在寻找要观看的内容时都被Netflix的推荐所吸引,或者直接去亚马逊的推荐部分看看下一个要购买的东西。
在本文中,我将解释如何使用图数据库构建实时推荐引擎。
- 中途提示的室内设计
- CMU研究人员开发了一种简单的远程学习人工智能方法,将视觉先验知识转移到机器人任务中:相较于基准线,政策学习提高了20%
- Google AI推出STUDY:一种在教育环境中用于有声读物的社交感知-时间因果推荐系统
什么是推荐引擎?
推荐引擎是一个应用高级数据过滤和预测分析的工具包,以预测和预测客户的需求和愿望,即客户可能消费或参与哪些内容、产品或服务。
为了获取这些推荐,引擎使用以下信息的组合:
- 客户的过去行为和历史,例如购买的产品或观看的系列。
- 客户与其他客户的当前行为和关系。
- 产品被客户评级。
- 企业的畅销产品。
- 类似或相关客户的行为和历史。
什么是图数据库?
图数据库是一种NoSQL数据库,其中数据存储在图结构中,而不是表格或文档中。图数据结构由节点和它们之间的关系连接组成。节点和关系都可以有自己的属性(键值对),进一步描述它们。
下图介绍了图数据结构的基本概念:
流媒体平台的实时推荐引擎
现在我们知道了推荐引擎和图数据库是什么,我们准备介绍如何使用图数据库为流媒体平台构建推荐引擎。
下面的图表示两个客户看过的电影以及两个客户之间的关系。
有了这个存储为图的信息,我们现在可以考虑电影推荐来影响下一个要观看的电影。最简单的策略是显示整个平台上观看次数最多的电影。使用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'}
)并遍历图匹配Marie的直接朋友或他们的朋友(她的朋友的朋友),使用灵活的路径长度表示法-[:IS_FRIEND_OF*1..2]->
,表示一到两个IS_FRIEND_OF
关系的深度。
我们注意不要将Marie自己包括在结果中(WHERE
子句),也不要得到重复的直接朋友的朋友(DISTINCT
子句)。
查询的后半部分与最简单的查询相同,但现在不再考虑平台上的所有客户,而是考虑到了玛丽的朋友和朋友的朋友。
就是这样,我们刚刚为流媒体平台构建了实时推荐引擎。
总结
在本文中,我们看到了以下主题:
- 推荐引擎是什么,以及它用于进行推荐所使用的信息量。
- 图数据库是什么,以及数据是如何以图形而不是表格或文档的形式存储的。
- 使用图数据库构建流媒体平台的实时推荐引擎的示例。
José María Sánchez Salas 目前居住在挪威。他是来自西班牙穆尔西亚的自由数据工程师。在商业和开发领域之间,他还撰写了一份数据工程的新闻简报。