麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
733
2023-04-23
实时推荐场景中的图形数据库用例
译者 | 陈峻
审校 | 孙淑娟
本文在介绍图形数据库和推荐系统的基本概念的基础上,详细讨论了图形分解技术、PageRank算法、以及协同过滤等方法,以及如何使用NebulaGraph图形数据库,去构建实时推荐系统。
实时推荐是当今零售行业非常热门的话题,其目标是为了方便用户在电商网站上搜索了产品之后,应用程序立即为他们提供个性化的推荐。这是一项具有挑战性的任务,毕竟用户尚未决定要购买哪种产品,因此应用系统需要深入了解他们的偏好和行为。
为了实现这一目标,实时推荐系统需要能够以接近实时的速度处理海量数据。实时系统通常作为电商网站或移动应用的一部分,可以根据用户当前的行为,推荐相关的产品。例如,一个正在销售鞋履的电商网站,可能做到在用户查看“男士运动鞋”页面时,恰到好处地向其展示不同款式的鞋子。
而由于图形技术具有预测用户行为,并据此提出建议的能力,因此它是实时推荐的不错选择。其中,以NebulaGraph为代表的图形数据库,就提供了一种灵活的数据模型,可以被用来表示实体之间的各种类型关系。此类关系不仅包括典型的“产品”和“用户”之间的关系,还包括其他对于应用而言非常重要的关系。例如,您可以使用图形数据库,来表示复杂的用户分组(例如“各种朋友”)、以及产品类别(例如“各种书籍”)。只要两个实体之间有边(edge),就可以使用图形技术来表示。
其实,图形数据库比关系数据库更善于表示各种类型的关系。例如,如果您有大量具有相似兴趣、但属于不同组的用户,那么在关系数据库中,就需要为每个组创建一个单独的表,然后在查询的时候,将他们连接到一个大的数据表中。相反,在图形数据库中,每个用户可能有多个边,以代表他们在不同组中的兴趣。
一、什么是图形数据库?
图形数据库不同于大多数人熟悉的传统关系数据库管理系统(RDBMS)。RDBMS是将数据存储在一个由列和行组成的表中,彼此之间几乎不存在任何关系。而图形数据库在最初被设计的时候,就侧重于数据集之间的关系。因此,它们具有更强大和更专业的处理能力。值得注意的是,此处的“图形”其实是表示两个事物之间关系的图表。也就是说,图形数据库就是用来解释数据之间关系的数据库。下图展示了典型的图形数据库—NebulaGraph的复杂架构和设计。
为了避免数据集彼此之间形成无用的孤岛,图形数据库可以将多个数据集之间的点连接起来,揭示它们之间的重要关系。目前,图形数据库已经得到了广泛使用。
二、什么是实时推荐系统?
推荐系统主要用于预测客户的偏好,并为他们提供可能喜欢的产品或服务。此类系统往往被用于包括零售、媒体、娱乐、旅游、以及公共服务等各个行业,通过为客户提供个性化的建议,来帮助公司降低成本,并增加收入。例如,Netflix会使用某种算法,来根据您之前看过的电影,推荐后续的影片;Amazon也会使用推荐,来帮助购物者找到他们可能感兴趣、甚至会购买的新产品;Facebook则使用自己的算法,根据您的兴趣喜好,向您展示相关的广告信息。
三、为何要使用NebulaGraph进行实时推荐?
目前,在各种真实的应用环境中,数据挖掘的相关技术已能够给图形数据库带来大幅的性能提升。而作为一个高性能的线性可扩展类图形数据库,NebulaGraph可以通过无共享(shared-nothing)的分布式模型被使用在不同的场景中。其背后的目标是释放那些呈指数级增长的连接数据的能力。相对其他竞品图形数据库而言,NebulaGraph可以安全地处理数据集的大小,并在速度上提升约两倍左右。下图展示了NebulaGraph的基本工作原理。总的说来:
它是唯一可以存储和处理具有数万亿个关系连接、以及数十亿个数据点的数据库它旨在确保和实现无中断的、可扩展和恢复的最佳业务连续性
四、图形技术在推荐中的应用
推荐系统旨在根据用户的品味和偏好,为他们提供个性化的推荐。例如,应用可以通过用户在电商网站上的购物习惯,来提取和表示他们在电影和书籍领域的偏好特征。
通常,推荐系统主要有两大类:协同过滤(Collaborative Filtering,CF)方法和基于模型(model-based)的方法。而为了在不知道用户和电影属性的情况下,预测电影的评分,以KNN为代表的协同过滤方法,需要与基于模型的方法相结合,形成图形分解(graph factorization)方法,以提高评分记录在稀疏时的预测准确性。
作为一种基于图形的模型,图形分解方法可用于表示用户偏好,以及用户、项目和属性之间的关系。其目标是从用户评分和推荐中提取潜在特征,以便这些特征可以被用于以无监督的方式,实现对用户偏好的预测。
图形分解需要通过将原始数据集分解为更小的数据集、或集群来完成。而由于图形数据库能够支持高度连接的数据结构和数据点之间的关系,因此图形分解的过程往往需要使用图形数据库来实现。目前,图形分解方法已经被广泛地应用于许多在线推荐系统中。
五、如何使用NebulaGraph来构建推荐系统?
下面,我将向您介绍如何使用NebulaGraph之类的图形数据库来构建推荐系统。
1.定义数据模型
我们首先需要为推荐系统定义数据模型,以告知系统需要推荐什么类型的数据。如果想推荐电影的话,那么电影便可被我们作为实体。然后是定义需要那些与实体相关的信息。例如,如果您准备构建一个书籍推荐系统,那么您就需要知道它属于什么类型、或者是用什么语言编写的。而对于电影领域,我们只需要获取名称、发行年份、类别、以及国家等即可。下图展示了我们的电影实体的相关定义:
2.定义关系
接下来,我们需要做的是定义电影和用户(或人)之间存在什么类型的关系。通常,此类关系有两种:用户喜欢该电影和用户看过该电影(或用户没有看过电影)。在本例中,我们将把其简化为用户喜欢的电影。
假设有两个用户James和Kelsey,他们都是科幻电影A的粉丝。那么该电影就属于科幻题材的类别。如果James同时也喜欢科幻电影B,而Kelsey并没有看过,那么我们就并不知道kelsey是否喜欢科幻电影B。
使用上述数据图建模,我们可以很容易地发现由于James和Kelsey喜欢同样类别的事物,其中就包括了科幻电影B,因此Kelsey也可能会喜欢科幻电影B。推荐系统则会向Kelsey推荐科幻电影B。
3.提出建议
我们可以使用各种图形算法,在图形数据库中提出建议。
PageRank算法常被用于对于搜索结果中的网页进行排名。通过使用该算法,我们可以确定当有人搜索Google、或任何其他主流搜索引擎时,应首先为其推荐显示哪些网页,以及判定哪些网站的受欢迎程度更高。PageRank背后的基本思想是,下一个将要连接跳转的页面,会比当前的页面更重要。也就是说,如果每个人都被链接到某个相同的鞋类购买网站的页面,那么就意味着系统判断该页面会比其他网站更重要。而且被链接过来的人越多,则意味着其获得的权重越高。可以说,一个网站的受欢迎程度是通过它指向(和被引用)的链接数量来衡量的。同理,在看电影方面,一个人既可以继续观看相似类别的电影(即延续他的兴趣爱好),也可以跳转去看完全不同类型的随机影片。可见,电影流行度的判断就建立在将给定电影,与其同类进行数字哈希的结果上。
协同过滤算法是一种基于用户、项目及其连接信息的推荐系统方法。其判断的前提是:相似的用户群往往有着相似的兴趣。该方法通过查看现有用户及其临近用户的兴趣,来进行推荐。
六、小结
综上所述,由于图形数据库可以表示推荐系统中用户和产品之间的关系,因此它们可以被用来构建实时推荐系统。同时,由于能够针对强大的数据分析提供支持,图形数据库能够让推荐系统更加广泛地分析具有不同偏好的用户和产品。
译者介绍
陈峻 (Julian Chen),社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。