写点什么

华为云新一代黑科技核心算法揭秘

  • 2020-04-01
  • 本文字数:3697 字

    阅读完需:约 12 分钟

华为云新一代黑科技核心算法揭秘

推荐技术在社交 APP、电商、音乐视频图片平台、咨讯推送平台等场景中大展身手,带给用户便利的同时,提高了用户平台活跃度,增加了“物品”销量。但是,随着互联网技术的飞速发展,所能够获取的数据量和数据类型越来越多,如何利用这些错综复杂的数据,挖掘背后潜在关系,进行快速有效的推荐成为各公司必须思考的问题。



常见推荐应用场景


目前的推荐算法层出不穷,数据利用效率、推荐的效果、速度也不尽相同。例如,在电影推荐场景,传统基于协同过滤(CF)的方法仅考虑到左半边人对电影的 feedback 数据,而传统基于内容(CB)的方法仅考虑右半边电影的特性数据,这样单纯的依赖部分数据进行推荐难以满足用户更深层次的推荐需求,同时存在稀疏性等问题;基于深度学习的推荐是近期比较热火的方向,推荐效果较传统方法也有很大的提高,但却以牺牲时间性能为代价,推荐的结果解释性也较低。



电影推荐

1. Pixie 实时推荐算法介绍:

Pixie 实时推荐过程如图所示,主要基于对图上多起点的 Pixie Random Walk:其根据各节点的重要性给各请求节点分配不同的游走步数, 同时对各请求节点进行 Pixie Random Walk,综合各起点 Pixie Random Walk 下候选节点的得分结果,进行推荐。



Pixie 实时推荐过程示意图


其中,Pixie Random Walk 过程:从请求节点(如下图中的节点 V4)沿着边,根据一定的倾向性不断地“游走“到相邻的节点,达到一定步数(步长)时返回起点重新游走。


游走步长:CurrSteps = SampleWalkLength(α)


多次这样的游走后, 当高频率经过的点的个数超过一定数量时,或者达到分配的步数上限时结束。


Pixie Random Walk 游走过程中,随着被经过的次数的增加,候选节点被推荐的得分也相应增加;当所有的 Pixie Random Walk 结束时,Pixie 将给出各候选节点的综合得分,得分越高被推荐的程度越大。



Pixie RandomWalk 过程示意图

2. Pixie 实时推荐特点:

(1)考虑多重关系共同作用:


Pixie 推荐基于多重关系的评价,不仅仅是基于用户与商品之间的历史交互关系,同时考虑到用户之间、商品之间等多层隐含关系。推荐结果是在多重关系下共同作用的结果,推荐某种程度上相较于单纯的利用用户历史交互数据或商品属性进行推荐更为精准。同时,可以避免“信息茧房”的问题。


例如:某电影平台用户 Frank 打开电影平台,Pixe 实时推荐算法向其推荐电影:Artificial Intelligence> Lincoln>Ready Player One


这里,Pixie 首推 Artificial Intelligence,是多个重关系多个原因的叠加:


①从用户与电影交互角度,与 Frank 有相似爱好的 Sarah 观看了 Artificial Intelligence: The Sixth Sense ->Sarah-> Artificial Intelligence,


②社交关系上,Frank 的好友 Mike 也观看了此电影:Frank->Mike-> Artificial Intelligence


Frank 的好友 Sarah 也观看了此电影:Frank->Sarah-> Artificial Intelligence


③电影特性关系上,电影 Artificial Intelligence 与 The Sixth Sense 具有相同的主演: The Sixth Sense-> Haley Joel Osment ->Artificial Intelligence;


相同的主题:The Sixth Sense ->Drama->Artificial Intelligence


④更多深层潜在关系:Frank->Mike->Alice->Artificial Intelligence。


以上各种关系在 Pixie 实时推荐中进行了叠加,最终向 Frank 首推 Artificial Intelligence。



(2)支持多请求节点(qurey vertices)下综合推荐,满足各种复合型、时变、多样性推荐场景需求


例如:电影平台上的用户,小雨近期看了 2 部电影 Ready Player One、;小易刚浏览了好友 Gina 主页,添加巨星 Haley Joel Osment 的动态关注;小桐刚刚进行了关键词搜索 Drama,Sci-Fi;等等,对于用户一些列实时的多样性组合操作行为,Pixie 实时推荐算法均可以综合各类操作,考虑各请求类型起点出发的多重关系,快速给出最相关的推荐排序。



不仅如此, Pixie 不同于以往那种单一性的推荐方法, 其推荐的范围更加多样,可以是不同类的商品,也可以是人,避免推荐结果局限于单一类型。同样以电影推荐场景为例,针对同一组数据,不需要重新建模,只需要改变输入参数,即可推荐电影,兴趣好友(Sarah>Alice>Gina), 甚至系列主演(Haley Joel Osment>Tye Sheridan)等等。


(3)可扩展性更强,对大数据量依然能够满足实时性推荐需求


社交巨头 facebook 从 2007 年的 5000 万用户,已增长之 20 亿+;拥有图片版 Twitter 之称的 Pinterest 目前坐拥 30 亿+的图片,2 亿+用户月活。在如此庞大的数据量下,传统方法(例如 CF)计算量随着数据量呈线性(或者不止线性)增长,很难满足实时性推荐需求,Pixie 算法与之不同,其计算量几乎独立于数据量。Pinterest 曾用其业务数据测试对 Pixie 实时推荐算法进行测试发现,在 10 亿+数据时,Pixie 实时推荐算法依然能够秒极内产生推荐结果。大数据量下,依然能够达到较好的实时推荐效果。相较于过去传统算法,通过 Pixie 算法新增的推荐量增长了 50%以上。


  1. 基于图引擎(GES)平台的 Pixie 实时推荐使用:

  2. 首先,在 GES 创建图,这里以图 2 所示的电影推荐场景为例

  3. 首先,在元数据管理栏创建 schema 如下:



图管理栏创建图,根据提示上传点边数据文件:


其中,点数据文件 vertex.csv 内容:


Frank,user,弗兰克M,18-24,college/grad student,2906Mike,user,麦克,M,25-34,other or not specified,30606Sarah,user,莎拉,F,18-24,other or not specified,55105Alice,user,爱丽丝,F,25-34,academic/educator,79928Gina,user,吉娜,F,35-44,sales/marketing,60202Ready Player One,movie,头号玩家,2011Lincoln,movie,林肯,2012Artificial Intelligence,movie,人工智能,2001The Sixth Sense,movie,灵异第六感,1999Haley Joel Osment,actorTye Sheridan,actorSteven Spielberg,directorDrama,genreSci-Fi,genre边数据文件edge.csv内容:Frank,The Sixth Sense,like,2017/12/22 23:24Mike,Artificial Intelligence,like,2017/12/22 20:20Mike,Lincoln,like,2017/12/23 13:08Sarah,The Sixth Sense,like,2017/12/22 22:00Sarah,Artificial Intelligence,like,2017/12/23 21:05Alice,Artificial Intelligence,like,2017/12/22 10:24Alice,Ready Player One,like,2017/12/23 17:25Gina,Lincoln,like,2017/12/22 16:30Gina,Ready Player One,like,2017/12/22 21:37Frank,Mike,friendsFrank,Sarah,friendsMike,Sarah,friendsMike,Alice,friendsAlice,Gina,friendsThe Sixth Sense,Haley Joel Osment,hasActorThe Sixth Sense,Drama,hasGenreArtificial Intelligence,Drama,hasGenreArtificial Intelligence,Sci-Fi,hasGenreArtificial Intelligence,Haley Joel Osment,hasActorArtificial Intelligence,Steven Spielberg,hasDirectorLincoln,Steven Spielberg,hasDirectorLincoln,Sci-Fi,hasGenreReady Player One,Steven Spielberg,hasDirectorReady Player One,Sci-Fi,hasGenreReady Player One,Tye Sheridan,hasActor
复制代码


创建图成功后,访问所创建成功的图,左栏可以看到目前 GES 上的图分析算法,选择“实时推荐”(Real-time Recommendation)算法根据提示选择左侧栏的参数,这里 sources 栏用于输入请求节点(可以多个,标准的 csv 数据格式输入),label 参数过滤出期望得到的节点类型。


例如:


(1)“当 Frank 打开电影平台,向其推荐电影“时,可以输入 sources 为 Frank, label 为 movie,其他参数如下图(左),点击运行。


算法运行结束后,页面画布上将会出现含有推荐节点的子图(大小反映了推荐程度,点击右上角图例上的相关项目,可以快速锁定相应类型节点);Pixie 的结果将会出现在下方“查询结果”栏:



由图引擎的运算结果可以很清晰显示用户、电影、演员、导演等之间的关系,根据多因素共同作用结果,演算出最为精确的推荐结果,相较于过去的推荐结果,精度更高,解释能力更强。


(2)当某“游客”用户小易登陆平台,浏览了 Gina 主页以及搜索了演员 Haley Joel Osment 动态,这一行为具有很强的个人偏好属性说明他对 Gina 以及 Heley Joel Osment 有兴趣,这时,我们可以输入参数如下图左,综合考虑这两种兴趣(“Gina”、“Haley Joel Osment”)进行实时推荐:


sources: Gina, Haley Joel Osmentlabel: movie
复制代码



值得注意的是,图引擎因为是基于图的结构进行实时计算,因此可以适应数据的动态变化,如上图“小易刚浏览了好友 Gina 主页,添加巨星 Matt Damon 的动态关注”这一行为,可以通过 gremlin 等语句实时更新到当前图数据里,做到实时更新,实时推荐。不仅可以考虑到考虑小易的近期倾向性行为,同时考虑小易特有的各类关系(人->电影,人->人,电影->电影等等),这样的实时推荐,可以极大增加推荐的准确度,从而增加点击率,提高转化率。


综上,可以看出,图引擎服务提供的实时推荐算法,在多重关系(用户与商品的历史交互信息,人与人、商品与商品等背后潜在关系)共同作用下进行推荐,精度更高;支持多请求节点下综合推荐,满足各种复合型、时变、多样性推荐场景需求;大数据量下速度,依然能够达到较好的实时推荐效果,可扩展性强,欢迎大家进行试用。


本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/pTxc8wi7By8qy_uqcmHQqw


2020-04-01 21:12769

评论

发布
暂无评论
发现更多内容

阿里要求其内部程序员必须精通的并发编程笔记:原理+模式+应用

Java架构追梦

阿里巴巴 编程 面试 并发 java架构

10.4领域驱动设计DDD

张荣召

Linux IO模式及 select、poll、epoll详解(含部分实例源码)

linux大本营

c++ Linux 后台开发 异步IO epoll

美团Java面试一轮游,太激烈了,问啥啥不会,我该怎么办?

比伯

Java 编程 架构 面试 计算机

架构师训练营3期第一周学习总结

简简单单

JDBC【4】-- SPI底层原理解析

秦怀杂货店

Java 源码 spi

食堂就餐卡系统UML设计

简简单单

10.7作业

张荣召

Mybatis【3】-- Mybatis使用工具类读取配置文件以及从属性读取DB信息

秦怀杂货店

Java 数据库 mybatis

【Java基础】-- isAssignableFrom的用法详细解析

秦怀杂货店

Java 关键字

让“数字鸿沟”变为“数字通途”

CECBC

数字化时代 支付产品

年轻人,学好Nginx,走遍天下都不怕

程序员小灰

c++ nginx Linux 服务器 架构师

Mybatis【2.2】-- Mybatis关于创建SqlSession源码分析的几点疑问?

秦怀杂货店

Java 数据库 mybatis

10.3微服务网关的技术架构

张荣召

10.5软件组件设计原则

张荣召

架构师训练营第十周学习总结

Gosling

极客大学架构师训练营

和同事交流不会kafka怎么行,API奉上,不是大神也能编

小Q

Java 学习 架构 面试

10.1微服务:服务本身的设计,维护及治理

张荣召

学习总结--week10

张荣召

架构师训练营第十周课后作业

Gosling

极客大学架构师训练营

区块链技术赋能信息通信行业信用监管

CECBC

区块链 信用

区块链创新中国价值链

CECBC

区块链

10.2微服务:落地实践的策略与思路

张荣召

Mybatis【4】-- 关于Mybatis别名定义

秦怀杂货店

Java mybatis

架构师训练营-week10

睁眼看世界

极客大学架构师训练营

数仓搬迁:从方法到实践,带你解决数据一致性对比

华为云开发者联盟

数据仓库 数据 存储 数据校验 搬迁

Mybatis【2.3】-- Mybatis一定要使用commit才能成功修改数据么?

秦怀杂货店

Java 数据库 mybatis

多线程源码明白了吗?不明白的话来看腾讯大牛给你画的面试重点

小Q

Java 学习 架构 面试 线程

如何应对Spark-Redis行海量数据插入、查询作业时碰到的问题

华为云开发者联盟

数据库 redis spark 开源 数据

C语言常用错误代码释义大全,让你编译运行报错不是烦恼

ShenDu_Linux

编译原理 常见错误

架构师训练营第 10 周作业

netspecial

极客大学架构师训练营

华为云新一代黑科技核心算法揭秘_文化 & 方法_华为云产品与解决方案_InfoQ精选文章