阿里凑单算法首次公开!基于Graph Embedding的打包购商品挖掘系统解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 你是否也曾遇到类似的情况——差5块钱就能包邮,跨店满400减50就少20怎么办?凑单作为购物券导购链路的一个重要环节,旨在帮助你找到合适的商品。如何在凑单场景突破找相似、发现惊喜的同时做到成交翻倍,实现体验和数据上的双赢?今天我们一起来破解。

一、背景

凑单作为购物券导购链路的一个重要环节,旨在帮助用户找到商品,达成某个满减门槛(比如满400减50),完成跨店凑单,完善购物券整个链路的体验。满减购物券作为大促中使用最广泛的一种营销手段,优势远大于红包、商品打折等优惠活动,它不仅能给用户带来切实的优惠,而且能让用户买的更多,提升客单价。凑单作为用券的重要链路,旨在帮助消费者找到能使用同门槛优惠券的商品。

近期,阿里的凑单设计相比往年,有两个重大突破,首先是产品形态上的改变,往年,凑单只是一个商品推荐页,今年,凑单能够支持搜索、价格筛选、类目筛选、销量排序、价格排序等搜索功能。其次,算法上做了重大突破,基于Graph Embedding的bundle mining,bundle是打包购的意思,我们认为凑单的重要场景是当用户已经加购了商品A,还想找一个能一起打包买的商品B,而不是想找跟A相似的商品C,传统的u2i、相似i2i并不能满足凑单场景的需求,为了突破找相似等经常被人诟病的体验,我们甚至不能有u2i、相似i2i等逻辑,所以bundle mining变成凑单算法优化的重点,不仅能提升丰富性的体验,还能提升转化效率。

16ad8dd639c3b8fe2fbceb44aa65876d027e5675

二、核心算法

1、基本思路

图是一种抽象程度高、表达能力强的数据结构,它通过对节点和边的定义来描述实体和实体之间的关联关系。常用的图有社交关系网络、商品网络、知识图谱等等。

用户行为是一个天然的网络图,边和节点往往有着各种丰富的信息,graph embedding是学习节点隐表示向量,在一个连续向量空间中对节点的关联关系进行编码,便于计算节点之间的关联关系,同时,graph具有传播能力,通过random walk可以挖掘多度关系,能有效的提升覆盖度,扩大召回。

Graph Embedding是学术界一个重要研究方向,比如deep walk,是语言模型和无监督学习从单词序列扩展到图结构上的一个典型方法,该方法将截断游走的序列当成句子进行学习,之后采用word2vec中Skip-Gram模型进行训练,得到每个节点的embedding向量。Line只针对边进行采样,Node2vec可以调节参数来进行BFS或者DFS的抽样。

所以Graph Embedding的基本思路是,对graph进行采样(Sampling),采出来的序构建模型(Embedding)。

2、主要技术  

结合我们的场景,要挖掘共同购买的关系,直接通过item-item的关系挖掘也可以做到,传统的协同过滤,也可以做到,为什么我们还需要构建graph?因为graph具有传播能力,它不仅能有效的提取出来直接关联,而且可以通过游走策略,挖掘出来二度、三度的关系。我们认为,朋友的朋友,也是朋友,也存在一定的弱关联,有效的利用这种传播能力,能解决购买数据的稀疏性,大大的提升覆盖。

我们主要有三方面的工作:

一是,基于用户购买行为构建graph,节点:商品,边:商品间同时购买的行为,权重:同时购买的比重,可以是购买次数、购买时间、金额等feature;

二是,基于权重Sampling(weighted walk)作为正样本的候选,负样本从用户非购买行为中随机抽样;

三是,embedding部分将无监督模型升级成有监督模型,将基于weighted walk采出来的序,构造成item-item的pair对,送给有监督模型(DNN)训练。下图是算法框架图。

7c45f70030c8241b258eb43408bca233931355a8

算法框架图


a) 构建Graph

上文提到,我们要挖掘商品间共同购买的关系(bundle mining),类似买了又买的问题,所以,我们构建的graph是带权重的商品网络,节点:商品,边:商品间共同购买的关系,权重:共同购买次数、购买时间。

为什么需要带权重的Graph?因为random walk等传统方法不适用商品网络,商品节点动辄上千万,其中大部分节点的关联性是很弱的,也就是冷门商品居多,只有少部分商品构建的graph是热点,如果采用random walk去采样,会采出很多冷门节点的序列,所以我们基于边的权重去采样(weighted walk),使采样尽量往热门节点方向游走,这样采样出来的样本置信度才更高。

因此,我们的输入是一个带weight的graph ,Graph定义:G = (V,E,W),V = vertex (顶点或者节点,在bundle的问题中,特指商品),E = edge(边,在bundle的问题中,特指共同购买) ,W = weight(边的权重,共同购买的次数、时间),如下图,接下来就要进行sampling。

a4e08287b18421f7481d9462481b1f284dd9873d

商品graph

b)Sampling

传统的方法,比如deep walk,它的Sampling本质上是有两部分,首先,通过random walk的方式进行游走截断,其次,在仍给word2vec中Skip-Gram模型进行embedding之前,用negative sampling的方式去构造样本;这种随机采样的方法会大概率的将热门节点采集为负样本,这种方式适用于语言模型,因为在自然语言中,热门的单词均为无用单词(比如he、she、it、is、the)。对于我们的商品网络,刚好相反,热门商品往往是最重要的样本,如果采用negative sampling的方式去构造样本,模型肯定是学不出来。因此,我们基于边的权重去采样(weighted walk),使采样尽量往热门节点方向游走,以下图为例:

98cead9feef2b413d886178137115e3873be376e

带权重的商品graph

举个例子来说,假设游走2步,从节点A出发,随机取下一个邻居节点时,如果是random walk算法,它会等概率的游走到B或C节点,但是我们的算法会以7/8的概率取节点C,再会以8/12的概率游走到节点D,最终很大概率上会采出来一条序walk=(A,C,D),对于原始graph,A和D是没有关联的,但是通过weighted walk,能够有效的挖掘出A和D的关系,算法详见:

5bf685bc8fdfa9c2c5a0e9d4102b797f1c1ff777

算法实现是在odps graph平台实现的,一个分布式的图计算平台,离线graph有2亿条边,3千万节点,10分钟跑完所有的数据,实时部分,我们实现了每分钟最高可更新10w的Graph边的结构,如何在分布式odps graph平台实现这套算法详见另一篇ata,尽请期待

c)Embedding

上一部分介绍了如何构建了带权重的概率图,基于带权重的采样(weighted walk)作为正样本的候选,负样本从用户非购买行为中随机抽样;这一部分主要介绍embedding的部分,将基于weighted walk采出来的序,构造成item-item的pair对,送给embedding模型,我们构造了一个有监督embedding模型(DNN),规避无监督模型无法离线评估模型效果的问题。模型结构如下图。

adc80e67c23a11d279a2be5a559f8d99e6f94d7d

有监督的embedding模型(DNN)

三、实现

1、离线

a)训练:离线模型在PAI平台上用tensorflow框架实现,抽取了历史50天的全网成交数据,大概抽取3000万节点,构建的graph,在odps graph平台做完weighted walk,产出2亿条样本,也就是item-item的pair对,训练至收敛需要2小时的时间 

b)预测:从全网所有行为中,随机抽取几十亿条pair对,去做预测,给每对item pair预测一个score  

c)上线:对每个种子商品取topN的bundle商品,打到搜索引擎的倒排和正排字段,从qp中取出每个用户的种子商品,基于倒排字段召回bundle商品,基于正排字段做bundle排序

2、实时

用户购买行为,日常和大促差异很大,为了能够实时的捕获用户实时行为,我们在porsche上建了一套实时计算bundle mining的流程:

a)数据预处理:在porsche上对用户实时日志进行收集,按离线的数据格式处理成实时的数据流  

b)Sampling:发送给odps graph实时计算平台,构建graph,做weighted walk,生成序,再通过swift消息发出  

c)Embedding:在porsche上做DNN模型训练和实时预测 

d)数据后处理:计算item的topN的bundle item list,实时写到dump和引擎

四、实验和结果

双十一预热期间,我们将bundle算法上线对比基准桶,提升很明显

1、点击:离线版bundle算法对比基准桶,ipv提升13%,实时版bundle算法在此基础上又提升4%,如下图:

211fb168fcafa8cdbbb0dc8232f16c9e81cda128

2、丰富性:bundle算法对比基准桶,人均曝光叶子类目提升88%,人均曝光一级类目提升43%,如下图。

35fc6388f47a17f6d320a9824113fb2154f17a7f

五、总结  

graph的核心优势,具有传播能力,朋友的朋友,也是朋友,传统i2i(统计版i2i),只统计直接关系,而我们构建的共同购买的graph,可以通过游走挖掘多度关系,弥补购买行为稀疏的问题,有效的提升了覆盖率,我们离线实验发现,对比统计版本auc提升非常明显。

我们实现了实时大规模graph更新,每分钟最高可更新10万量级边,双11这么大的qps能够平稳运行。

六、未来和展望  

凑单在未来还要继续努力,我们还有不完善的地方,在产品形态上,第一,价格preview没有做出来,用户不知道自己已经加购了多少,还差多少,能用多少优惠券,我们希望下次能在凑单页帮用户实时的算出凑单进度,第二,我们这次没有实时捕捉到入口种子商品,下次我们期望能做到,不同入口点进去,凑单的商品能和入口种子商品强相关;在算法优化上,把新颖性做强,尝试用graph bandit的方法,给用户投放一些没看过的但又相关的品类,根据投放的收益,设计一个合理的机制去explore。


原文发布时间为:2018-01-31

本文作者:清灵

本文来自云栖社区合作伙伴“ 阿里技术”,了解相关信息可以关注“阿里技术”微信公众号

相关文章
|
6天前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
28 10
|
3天前
|
存储 监控 算法
探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
|
24天前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
50 17
|
29天前
|
算法 搜索推荐 Java
【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
本文探讨了如何将算法学习与实际项目相结合,以提升编程竞赛中的解题能力。通过《苍穹外卖》项目,介绍了订单配送路径规划(基于动态规划解决旅行商问题)和商品推荐系统(基于贪心算法)。这些实例不仅展示了算法在实际业务中的应用,还帮助读者更好地准备蓝桥杯等编程竞赛。结合具体代码实现和解析,文章详细说明了如何运用算法优化项目功能,提高解决问题的能力。
58 6
|
2月前
|
存储 算法 安全
基于红黑树的局域网上网行为控制C++ 算法解析
在当今网络环境中,局域网上网行为控制对企业和学校至关重要。本文探讨了一种基于红黑树数据结构的高效算法,用于管理用户的上网行为,如IP地址、上网时长、访问网站类别和流量使用情况。通过红黑树的自平衡特性,确保了高效的查找、插入和删除操作。文中提供了C++代码示例,展示了如何实现该算法,并强调其在网络管理中的应用价值。
|
2月前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
274 30
|
2月前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
2天前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
1月前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
|
1月前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
147 68

推荐镜像

更多