图观| 从王宝强、费翔、阿汤哥等新上映的电影聊聊图的智能推荐场景
从技术的视角来看,推荐系统本质上是在用户需求不明确的情况下,从海量的信息中为用户过滤出他可能感兴趣的信息的一种技术手段。
我们日常接触到的智能推荐有:
·电商网站:如淘宝、天猫、京东、Amazon……
·生活服务:如美团、饿了么、携程、小红书……
·视频:如抖音、快手、优酷……
·音乐:如网易云音乐、QQ 音乐……
·资讯:如今日头条……
·金融科技:理财产品……
一般来说,推荐算法的种类繁多,主要有基于内容的推荐,基于社交场景的推荐等等,以协同过滤算法[1] (Collaborative-based Filtering, CF)来说,这种方法是依赖于用户过去的行为,如用户收藏过的文章,购买过的商品,浏览某商品的次数等等。
协同过滤算法主要分为两类:
·基于用户的协同过滤算法:给用户推荐与其兴趣相似的用户喜欢的物品。
·基于商品的协同过滤算法:给用户推荐与其之前喜欢的物品相似的物品。
例如,某平台在某档期共上了4部电影:《八角笼中》《封神第一部》《碟中谍7》以及《长安三万里》。现假设,有一名用户 E 访问了该网站,推荐系统需要决定《碟中谍7》是否要推荐给用户 E 。
推荐系统可以利用的数据有,用户 E 对档期内影片的历史评价数据,以及其他用户对档期影片的历史评价数据。
在图1中,我们简单用“点赞”和“差评”进行表示,并且能直观地看出用户、影片和评价记录构成了带有标识的有向图[2] 。
接下来,为了方便计算,我们将图1转换成矩阵的形式(这个矩阵表示了物品共同出现的情况,因此被称为“共现矩阵”)。
其中,影片作为矩阵行坐标,用户作为列坐标,我们再把“点赞”和“差评”的用户行为数据转换为矩阵中相应的元素值。这里,我们将“点赞”的值设为 1,将“差评”的值设为 -1,“无数据”置为 0。推荐问题就转换成了预测矩阵中问号元素的值的问题。由于在协同过滤算法中,推荐的原理是让用户考虑与自己兴趣相似用户的意见。因此,我们预测的第一步就是找到与用户E 兴趣最相似的 n 个用户,然后综合相似用户对“碟中谍7”的评价,得出用户E对“碟中谍7”评价的预测。见下图2。
从上图/上表可以看出,用户B 和用户C 由于跟用户E 的行向量近似,被选为 Top n(这里假设 n 取 2)相似用户,接着在图 (e) 中我们可以看到,用户B 和用户C 对“碟中谍7”的评价均是负面的。因为相似用户对该影片的评价是负面的,所以我们可以预测出用户E 对该电影的评价也是负面的,于是,推荐系统就不会向用户E 推荐《碟中谍7》了。
协同过滤算法也存在着一些不足,除了冷启动问题(新用户、新标的物没有相关行为信息,这时系统怎么给用户推荐、怎么将新标的物推荐出去?所以在推荐系统的落地过程中,需要做结合业务场景的特殊处理,才能为用户提供好体验!)还有稀疏性的问题,尤其是那些用户基数大、标的物数量大,特别是资讯类或短视频类的物品,一般用户只对很少量的标的物产生操作行为,这时用户操作行为矩阵就是非常稀缺的,而太稀缺的行为矩阵,往往会导致计算出来的标的物相似度不精准,这就会影响到推荐结果的精准度了!
在图数据库中,除了可以通过编写UQL查询语句来实现较为简单的协同过滤,还可以使用Ultipa提供的KNN(K Nearest Neighbor,K最近邻)算法直接实现上述的推荐运算,用户不需要任何的数据训练,就可以用自然语言的方式找到数据:
algo(knn).params({node_id: '用户E',node_schema_property: ['八角笼中', '封神第一部', '长安三万里'],top_k: 1000,target_schema_property: @user.`碟中碟7`}) as result return result
不仅如此,用户还可以通过Ultipa Manager(高可视化前端管理平台)直观地看到查询结果,同时,所有步骤均可呈现(见下图)——这也是作为Graph技术区别于目前AI大模型工具黑盒化、不可解释的突出优势之一。
从上图中,我们可以看到,图[3]是一种表示实体之间的复杂关系的高维呈现。【关于图知识,可点击图观 | 从电影《满江红》看图数据库的高维力或 Ultipa的官方文档《Ultipa快速入门—图数据的基本构成-技术篇》】
在智能推荐系统中,图技术可以解决传统方法的缺点和提升推荐系统的性能,利用各种算法构建推荐模型,提升推荐的精准度、惊喜度、覆盖率等,甚至是实时反馈用户的兴趣变化。
1、推荐精准度的问题
推荐精准度的问题,需要通过构建好的推荐算法来实现。在真实的应用场景中,常常会出现用户刚购买完一双皮鞋,但是系统后续又陆续推荐了很多双皮鞋给用户。而精准的推荐应该是系统将鞋塞、鞋拔、鞋刷、鞋油、鞋布等周边推荐给用户。还有诸如应用关联规则进行像“啤酒与尿布[4]”这样的将看上去毫不相干的商品进行关联陈列的算法,进而可以精准地通过强大的算法以辅助商超的工作人员,进行科学、洞察地对货架进行摆放并提升销售额。
推荐精准度的问题,一方面是需要通过构建好的推荐算法来实现(Ultipa 嬴图建有上百种的图算法库,这是目前全球范围内最丰富的图算法库);另一方面还有算力的问题,就是能将“海存”的数据进行“深算”的能力,即通过深度挖掘数据,将最终的推荐变成点石成金的关键!【感兴趣的读者可以详细阅读:高并发图数据库系统是如何实现的?】
此外,评估推荐算法的价值也很重要。如,推荐系统如何服务于业务?如何衡量推荐系统的价值产出?如何通过指标在提升推荐系统效果的同时促进业务发展?…… 这些都是摆在开发人员面前的重要问题。
2、大规模计算与存储的问题
大量的用户和大量的标的物,对数据处理和计算会造成非常大的压力,所以落地推荐系统的执行效果,其背后是非常考验企业搭建的大数据分析处理平台的能力的。
目前国内很多采用的是Hadoop、Spark等来做数据存储、处理、计算等,但务实地说,Hadoop生态中的解决方案,甚至包括Spark,动辄就会用几十台甚至上百台机器,实际上每台机器的利用率都十分低下——软件根本无法充分利用底层硬件的高并发、低延时能力。或许大家应该思考下,为什么有的人在多年前就说过“Hadoop已死!”【更多关于“Hadoop已死!”的话题,点击《关于开源和闭源的探讨(上)》阅读】
GraphX 是Apache Spark的图计算组件,支持PageRank网页排序、Connected Component联通分量、Triangle Counting三角形计算等非常浅层的计算,一旦涉及到例如全图K-hop、Random Walking随机游走、鲁汶社区识别等任何关于深层计算时就无能为力了。这也是“大规模分布式”系统的一个通病,对于浅层(短链)的存储、查询与算法可以较好去支持,但是一旦进入深度(长链)的查询、分析与计算时,效率就变的极为低下——因为深度关联分析意味着系统的多个实例间需要频繁的交互,进而导致效率大幅降低,反应时长大幅增加……直至无法返回计算结果。不知道那些在GraphX 之上做开发的厂家,是否能够突破GraphX的这诸多限制?【更多扩展阅读,可点击图数据库知识点4 | 图计算与图数据库有区别吗?】【图数据库知识点5:图数据库只存不算?】
3、实时的问题
推荐系统更新的时延,经常是以小时或天来衡量的(所以,如果给用户提供实时的个性化推荐,尤其对大规模用户要做到实时响应,需要实时收集、处理用户的反馈,做到更及时、更精准的推荐,为用户提供强感知的推荐服务……这对算法、计算、工程都是相当大的挑战!)Ultipa嬴图可以实时(毫秒级-秒级)完成。
比如在一些依托工商图谱的审核、投研、行研等场景中,要查找上市企业或待上市企业实体与自然人之间的全部关联路径。假如4,000家企业与10,000个自然人之间进行全量计算,就需要查询40,000,000次最短路径,如果平均每对路径查询返回10条路径,全部结果有4亿条路径,即便是1条路径需要0.1秒,也需要2年的时间才能够完成计算,其计算复杂度可想而知。而数仓批处理的方式,根本无法及时完成这种面向海量数据的复杂查询,这个时候,只有实时图数据库(图计算)系统才能做到赋能客户以彻底解决算力不足的痛点。某大型金融行业客户通过使用Ultipa 嬴图高密度并发查询,实现了T+0(分钟级)完成以上所述的大规模批量查询,平均每组路径查询耗时仅0.1毫秒,较原使用的某知名美国图数据库系统的性能提升超过1,000倍。【更多扩展阅读,可点击文库 | 深“图”遍历挖出最终受益人】
注意,以下图为例,这是在一个百万-千万量级的点、边的图中(中等大小),而在Python或其它图计算系统中,这个过程通常都长达数个小时或者更久,甚至无法返回任何结果。
在图5中,从全图中抽样了5,000个顶点来实时绘制它们所构成的鲁汶社区的空间拓扑结构关系,Ultipa嬴图应用CRBR(Community Recognition Based Recommendation,基于社区识别的推荐),对全部商品(和用户)进行鲁汶社区识别(Louvain Community Detection),并按照用户的商品行为(浏览、购物车、购买等)进行分组等。先找到所有用户和商品所形成的紧密关联社群,然后再根据额外的信息来优化协同过滤的推荐逻辑,例如用户的属性信息、商品的分类信息等,通过Ultipa图计算引擎,以上操作可以以图模板搜索的方式实时完成,实时的用户行为、商品信息可以动态的插入或更新到图中。
还有基于图嵌入的推荐——GEBR(Graph Embedding Based Recommendation)。就图上的深度学习而言,这极有可能代表着AI发展的突破方向。【此处不展开,感兴趣的读者可以阅读Ultipa的官方相关的文档——《可解释人工智能与图学习》】
此外,实现实时与直观的数据建模和深入的查询优化有着强关联关系。对此Ultipa 嬴图自研并创建了面向业务层的UQL图查询语言,它支持Demi-schema,更符合复杂的数据处理需求,满足复杂图操作的需求,可以轻松描述图查询时的过滤条件等优势,并与人脑思维模式保持一致,且易读、易写、易学。
这大大区别于传统SQL,比如其阅读起来与人脑呈相反逻辑,理解难度大,如嵌套语句、连表搜索等,还有SQL 方式的路径查询过于复杂低效,无法明确表达高维数据以及其组合,如路径、点、边、原子值、聚合运算结果的集合等。
UQL图查询语言的应用,在使用的效率上是飞跃性的,比如过去一名程序员要进行关联查询时,需要编写上百行的SQL代码,构造很多张临时表,进行大量的表连接操作,而用UQL,程序员只需敲一行代码即可轻松搞定。值得一提的是,图操作查询在现实中的意义也是非同凡响的,例如协助执法部门调查电信诈骗,传统大数据技术框架之上的多节点间数据组网、穿透操作极为复杂,无法做到实时反馈,而用UQL查询语言的自组网模式仅需毫秒,也就是我们一次眨眼的时间,即能实时找到嫌疑人之间错综复杂的关联罪证。
4、服务质量的问题
如果你的产品有大量用户访问,那么构建一套高效的智能推荐系统,满足高并发访问,为用户提供稳定、快速、高效、精准的推荐服务是一个巨大挑战,我们基于传统类型的推荐系统所存在的问题,将关于图的推荐系统优势列举如下:
-
实时推荐能力、实时数据刷新能力(传统痛点:推荐无法做到实时,需进行预处理);
-
计算存储能力(传统痛点:存储成本大,大量冗余数据侵占存储空间);
-
与知识图谱的无缝结合,例如商品知识图谱;(传统痛点:基于SOL二维表的低维性表达, 图具有高维性的构建能力);
-
推荐的高度智能化(而不是基于统计学计算模型的那种机器“智能”);
-
推荐图谱 = 实时商品图谱+用户360图谱,也就是说一站式推荐解决方案可以在图上实现!
(文/ Emma Ricky )
最后,文尾鸣谢嬴图 Sr. Content Strategist Wanyi Sun对本文在技术严谨表述上的指导与贡献。
注释:
【1】协同过滤:就是假定相似用户有相似偏好,根据用户历史行为算出用户相似度,并用相似度加权平均其他用户的评分来预测该用户未打分物体的评分。
【2】有向图:当图中的边有明确的方向时,且在图中的各类操作可以利用这种方向的时候,我们称其为有向图。
【3】图:https://zhuanlan.zhihu.com/p/594489937
【4】啤酒与尿布:该故事发生在20世纪90年代的美国沃尔玛超市中,沃尔玛的超市管理人员分析销售数据时发现了一个令人难以置信的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品会经常出现在同一个购物篮中。这种独特的销售现象引起了管理人员的注意,经过后续调查发现,这种现象出现在年轻的父亲身上。在有婴儿的美国家庭中,一般是母亲在家中照看婴儿,年轻的父亲前去超市购买尿布。父亲在购买尿布的同时,往往会顺便为自己购买啤酒,这样就会出现啤酒与尿布这两件看上去毫不相干的商品经常会出现在同一个购物篮的现象。沃尔玛发现了这一独特的现象,开始尝试在卖场将啤酒与尿布摆放在相同的区域,让年轻的父亲可以方便地同时找到这两件商品,并很快地完成购物。

《图数据库原理、架构与应用》; 孙宇熙,嬴图团队;2022-8;机械工业出版社.
《图数据库原理、架构与应用》是国内第一本全面系统地详解有关图数据库、图计算技术的专著。全书围绕8大维度以帮助技术爱好者、从业者及高校师生快速实现对图数据库技术的入门、认知与实践指导。


·专家观察 | 高并发图数据库系统是如何实现的?
·图数据库知识点 | 图数据库只存不算?
·图数据库知识点 | 图数据库与关系型数据库的区别
·专家观察 | 图计算引发银行流动性风险管理变革
·文库 | 为什么选择 Ultipa?
相关文章:
图观| 从王宝强、费翔、阿汤哥等新上映的电影聊聊图的智能推荐场景
从技术的视角来看,推荐系统本质上是在用户需求不明确的情况下,从海量的信息中为用户过滤出他可能感兴趣的信息的一种技术手段。 我们日常接触到的智能推荐有: 电商网站:如淘宝、天猫、京东、Amazon…… 生活服务:如美…...
Redis系列一:介绍
介绍 The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. 相关资源 Redis 官网:https://redis.io/ 源码地址:https://github.com/redis/redis Redis 在线测试&#…...
Java 设计模式 - 单例模式 - 保证类只有一个实例
单例模式 - 保证类只有一个实例 为什么使用单例模式?单例模式的实现方式1. 饿汉式(Eager Initialization)2. 懒汉式(Lazy Initialization)3. 双重检查锁(Double-Checked Locking)4. 静态内部类&…...
第2章 JavaScript语法
准备工作 编写js需要准备一个编译器和游览器,js必须通过HTML/XHTML文档编写 js的编写位置 <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Docume…...
【Golang】Golang进阶系列教程--为什么 Go for-range 的 value 值地址每次都一样?
文章目录 前言现象无限循环相同地址 原因推荐阅读 前言 循环语句是一种常用的控制结构,在 Go 语言中,除了 for 关键字以外,还有一个 range 关键字,可以使用 for-range 循环迭代数组、切片、字符串、map 和 channel 这些数据类型。…...
小研究 - JVM 垃圾回收方式性能研究(三)
本文从几种JVM垃圾回收方式及原理出发,研究了在 SPEC jbb2015基准测试中不同垃圾回收方式对于JVM 性能的影响,并通过最终测试数据对比,给出了不同应用场景下如何选择垃圾回收策略的方法。 目录 4 垃圾回收器性能比较 4.1 测试结果 5 结语 …...
java根据poi解析excel内容
一.HSSFWorkbook、XSSFWorkbook、SXSSFWorkbook Apache POI包中的HSSFWorkbook、XSSFWorkbook、SXSSFWorkbook的区别如下: HSSFWorkbook:一般用于操作Excel2003以前(包括2003)的版本,扩展名是.xls。 XSSFWorkbook:一…...
实验报告-Sublime配置默认语法,以配置Verilog语法为例
实验报告-Sublime配置默认语法,以配置Verilog语法为例 1,下载Verilog语法环境2,Sublime配置语法工作环境,以Verilog语法环境为例。3,打开一个新的Sublime,验证编辑器配置Verilog为默认语法成功!4,Sublime汉化1,下载Verilog语法环境 参考文献: 1,Sublime Text 4加载…...
pve安装ikuai并设置,同时把pve的网络连接到ikuai虚拟机
目录 前因 前置条件 安装ikuai 进入ikuai的后台 配置lan口,以及wan口 配置lan口桥接 按实际情况来设置了 单拨(PPOE拨号) 多拨(内外网设置点击基于物理网卡的混合模式) 后续步骤 pve连接虚拟机ikuai的网络以及其他虚拟机连接ikuai的网…...
Android 面试题 ANR 五
🔥 什么是 ANR 🔥 ANR(Application Not Responding )应用无响应的简称,是为了在 APP卡死时,用户 可以强制退出APP的选择,从而避免卡机无响应问题,这是Android系统的一种自我保护机制。 在Android中…...
实训笔记7.28
实训笔记7.28 7.28笔记一、Hive的基本使用1.1 Hive的命令行客户端的使用1.2 Hive的JDBC客户端的使用1.2.1 使用前提1.2.2 启动hiveserver21.2.3 使用方式 1.3 Hive的客户端中也支持操作HDFS和Linux本地文件 二、Hive中DDL语法2.1 数据库的管理2.1.1 创建语法2.1.2 修改语法2.1.…...
C 游游的二进制树
题目描述 游游拿到了一棵树,共有nnn个节点,每个节点都有一个权值:0或者1。这样,每条路径就代表了一个二进制数。 游游想知道,有多少条路径代表的二进制数在[l,r][l,r][l,r]区间范围内? (请注意…...
收发存和进销存有什么区别?
一、什么是收发存和进销存 1、收发存 收发存是供应链管理中的关键概念,用于描述企业在供应链中的物流和库存管理过程。 收发存代表了企业在采购、生产和销售过程中的物流活动和库存水平。 收(Receiving) 企业接收供应商送达的物料或产品…...
小程序 账号的体验版正式版的账号信息及相关配置
siteinfo.js // 正式环境 const releaseConfig {appID: "",apiUrl: "",imgUrl: "" }; // 测试环境(包含开发环境和体验环境) const developConfig {appID: "",apiUrl: "",imgUrl: "" }…...
AIGC(Artificial Intelligence Generated Content)和 Web3对比,未来发展
一、AIGC(Artificial Intelligence Generated Content)行业 历史背景 AIGC(Artificial Intelligence Generated Content)是指利用人工智能技术生成的内容。随着人工智能技术的不断发展,AIGC 行业逐渐兴起。早期的 AIG…...
机器学习之Boosting和AdaBoost
1 Boosting和AdaBoost介绍 1.1 集成学习 集成学习 (Ensemble Learning) 算法的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。 集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学…...
汇编语言预定义寄存器和协处理器
ARM汇编器对ARM的寄存器和协处理器进行了预定义(包括APCS对r0~r15寄存器的定义),所有的寄存器和协处理器名都是大小写敏感的。 (1)预定义寄存器名 下面列出了被ARM汇编器预定义的寄存器名。 r0ÿ…...
【前缀和】974. 和可被 K 整除的子数组
Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! 974. 和可被 K 整除的子数组 题目:示例:题解: 题目: 示例: 题解: 本题与560.和为K的子数组高度相似 同样的,本题利用了前缀和的定理.当(pre[i]-…...
linux页框回收之shrink_node函数源码剖析
概述 《Linux内存回收入口_nginux的博客-CSDN博客》前文我们概略的描述了几种内存回收入口,我们知道几种回收入口最终都会调用进入shrink_node函数,本文将以Linux 5.9源码来描述shrink_node函数的源码实现。 函数调用流程图 scan_control数据结构 str…...
网络运维基础问题及解答
前言 本篇文章是对于网络运维基础技能的一些常见问题的解答,希望能够为进行期末复习或者对网络运维感兴趣的同学或专业人员提供一定的帮助。 问题及解答 1. 列举 3 种常用字符编码,简述怎样在 str 和 bytes 之间进行编码和解码。 答:常用的…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
EEG-fNIRS联合成像在跨频率耦合研究中的创新应用
摘要 神经影像技术对医学科学产生了深远的影响,推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下,基于神经血管耦合现象的多模态神经影像方法,通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里,本研…...
react更新页面数据,操作页面,双向数据绑定
// 路由不是组件的直接跳转use client,useEffect,useRouter,需3个结合, use client表示客户端 use client; import { Button,Card, Space,Tag,Table,message,Input } from antd; import { useEffect,useState } from react; impor…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手
华为云FlexusDeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手 一、构建知识库问答助手引言二、构建知识库问答助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建知识库问答助手实战3.1 配置Dify环境3.2 创建知识库问答助手3.3 使用知…...
