618省心凑背后的新算法——个性化凑单商品打包购推荐

2023-11-17

d0925b88a044500d5a99b4c2774d4f36.gif

作为购物导购链路的一个重要环节,凑单旨在快速帮助用户找到达成某个满减门槛(比如满300减50)的商品,完成性价比最高的跨店组合结算。

前言

  背景

凑单是一个历史悠久的场景,伴随着长期优化并不断升级,为用户决策提供了便捷通道。作为购物导购链路的一个重要环节,它旨在快速帮助用户找到达成某个满减门槛(比如满300减50)的商品,完成性价比最高的跨店组合结算。

基于用户圈选商品的凑单商品推荐(bundle mining)是区别于凑单场景和其他场景的算法解决方式,bundle这里是打包购的意思,我们认为凑单场景算法的重点是:当用户已经加购了商品A,还想找一个能一起打包购买的商品B,而不是想找跟A相似的商品C。基于这个假设,传统的基于商品相似推荐(i2i)以及基于用户兴趣偏好推荐(u2i)就不能契合场景需要,而如何寻找打包购的商品集合,提升场内转化效率是本场景算法建模主要的着眼点与发力点。为此,我们提出了凑单模型“Context Aware Item Add on Model”(CAAM)其中创新性地提出多trigger注意力网络和多元目标协同损失共同求解凑单场景的捆绑推荐问题。

我们从下表(用户成交数据在去年大促期表现)可以看出,在过去跨店满减订单中,用户下单金额距离下一门槛还差25%以内的量级平均占比20%,这反映出凑单需求未被很好满足。

42c5cd1de27b9bab6f7266332b38d5e4.png

今年618大促活动力度升级,减免金额扩大,凑单的需求随之也水涨船高。凑单是全平台满减活动下的一个刚性需求,但现有的凑单场景存在三个问题:1、金额随机性大,无法帮助用户快速定位确定金额的凑单商品(如用户勾选总额仅差10元到达下一满减门槛,这时推荐10元及微高价格的商品是能更快促进凑单结算);2、动线较长,传统凑单场景跳转新页面,无法与购物车商品状态发生实时关联(用户加购后需要回购物车重新勾选商品,再进行组合凑单规划与结算);3、相关性不足,由于其和购物车即时勾选状态没有关联,缺少“当前待下单商品”相关推荐的内容(如挖掘与用户勾选待结算商品的一些搭配品,衍生品抑或是经常打包结算的相关品等)。

其功能还需持续优化,甚至重新定义。

▐  现状


  • 存在的问题

凑单场景传统优化方式主要分为两类,第一类是探索User-Item关系的一些范式,期待能够找到用户潜在的兴趣偏好。第二类是探索Item-Item关系,basket推荐关联,这种方法目标是学习加购商品与凑单品之间的关联。这两种方式都很符合直觉,且有实际的线上效果,但是,我们需要重新思考一下用户的在凑单即刻的诉求。除了个性化推荐与关联推荐,凑单用户希望能够快速找到有一定购买价值的,和金额差较接近的商品。我们将其定位为三个方面——“快速”,“精准“以及“节约成本”。首先,“快速” 是指凑单场景需要具备使用户快速,便捷完成凑单的能力;“精准“ 是指推荐结果能够符合用户的兴趣;“节约成本” 是指用户能够定位到满足优惠且无多余开销的选择。

在算法设计方面,区别于基于用户个性化”猜你喜欢“式推荐的算法模型,我们提出多trigger注意力网络来建模购物车即时勾选商品与用户行为序列的相关度,模型不仅考虑到用户行为序列的影响,同时也兼顾了打包购整体集合的可用性。更好的将推荐商品在用户个性化与打包凑单性之间做trade-off。除此之外,我们提出了多元目标协同损失,用以模拟用户在凑单场点击-加购-成交三个维度动线的一致共现性,实验结果也表明,在本场内接近十分之一的用户发生加购,其中超过半数完成成交,加购转化率很高,也印证了我们对连续行为协同建模的有效性。

在产品模式方面,传统的凑单场景存在金额随机性大,动线较长,致使用户在定位打包购目标商品时较为困难且费时。因而我们今年在购物车结算页引入了一个新的场景【省心凑】,期待能够极大程度满足用户“快速,精准,节约成本“这三个方面的诉求,同时也期待能为拉动平台整体成交尽一份微薄之力。

  • 业务简介

59ada795acc3113db50a7126777969d9.png

场景入口设置在购物车最下端,当用户勾选跨店满减商品时会展示一个带有满减信息和拉取浮层按钮的飘条。飘条内会展示用户勾选商品关联的活动(如跨店满减满200-30)以及用户勾选商品距离下一个满减门槛的金额信息(如已减30,再买40减30),我们称其中的40为目标金额 price_diff。当用户点击”筛选满减“按钮即可唤起浮层,顶端为活动满减信息,紧接着便是省心凑的前置展示品以及跳转直达入口(查看更多),接下来是购物车商品流。当用户查看完购物车中的商品后紧接省心凑推荐信息流,在上方点击查看更多直接跳转至推荐信息流,或查看完购物车中的商品后也能达到推荐信息流。省心凑推荐商品价格围绕目标金额 price_diff 做一定的上延。

▐  技术路线

  • 产品&算法建模设计

针对于用户的三类型诉求,在产品设计和算法推荐策略上我们做了如下优化:

快速:动线优化


  1. 使用拉起浮层替代跳转新页面的展示方式。用户在拉起浮层后的操作与当前购物车中商品状态相关联,即在浮层内新增的加购品,会和主购物车内商品勾选状态合并。这样能够极大程度缩短用户成交动线,让用户体验连续凑单,替换勾选等操作。

  2. 在浮层内进行商品sku丰富度判断,单sku商品可以直接加购,无需跳转详情或拉起加购浮层;多sku商品支持拉起加购筛选浮层加购,省去用户点击跳转详情后再进行加购的成本。

  3. 当用户在浮层内新增勾选商品后,商品状态不会重置,底部价格差会动态变化。这样就能够给用户提示最实时,准确的凑单金额信息,保证用户在当前浮层能够完成凑单结算需求。

精准:凑单性挖掘

对于用户个性化推荐的学习分为两个方向进行,一是搭建凑单分模型,它基于省心凑场景特点,直接对凑单这一行为进行建模,下文模型章节中将详细说明。二是进行人货关系挖掘,例如用户历史多次复购品,易于凑单品(快消,生鲜,百货等),大促期的热款爆款和尖货等,并给予这些具备凑单属性的商品更高的权重。

节约成本:价格约束

在优化前两个需求基础上,我们也考虑到用户凑单的低成本需求。不同于无价格约束的个性化推荐方式,我们对price_diff和推荐商品的折后价进行策略约束,确保推荐商品在加购后能直接达到下一满减门槛,同时约束推荐品价格其不超出price_diff过大。

  • 技术结构设计

1ea2275e514c9ece58c6b6cbf2c7ecb0.png

召回

凑单场景和其他推荐场景重要差异在于,用户在喜欢需要与价格合适之间权衡选择。 基于此,我们在召回体系中引入了一些易于凑单,流行度较高的商品,通过圈品保障推荐的凑单心智:

  1. 复购品:用户在历史一年内有重复购买记录的商品,使用复购周期与复购分进行排序;

  2. 天猫尖货:天猫尖货是指大促期间售卖能力强,对大盘成交额起到支撑作用的选品,详细可参考 [1];

  3. 食品生鲜:食品生鲜具有快消属性,凑单成本较低且易转化,我们针对这一类运营选品扩增召回。

线上效果显示这三类召回,用户加购转化占比远高于曝光点击。高转化特性说明挖掘商品的凑单属性是必要的。

后处理

凑单需求具有与转化并生,持续时间短的特性,如何快速定位用户需求,推荐内容的散度就显得尤为重要。我们设置了基于队列的流式打散逻辑,保证用户在每一个视觉窗口内看到的商品都是多元化的。实验结果显示打散不仅能够保证用户浏览体验,在下翻深度、订单数和成交金额等指标上的表现都是正向的。


由于凑单处于交易链路的一环,它对商品的准确性也就有更高的要求。在大促商品状态多变的情况下,算法和服务端联动双重调取实时二方接口,保证商品价格,在售状态,参与活动等信息准确无误。

冷链路

双十一的一峰场景流量在几分钟之内破万,流量瞬时爆炸性增长给我们在工程上带来极大挑战。大促稳定性得益于如下三方面的保障:

定时扩容:资源保障,由于自动扩容延迟性,设置定时扩容来解决突发流量,将异常率控制在0.5%以下;

预热:链路冷启动保障,在流量到来之前使用低流量进行链路预热;

缓存:峰值二方服务加载失败保障,将历史请求结果按活动,价格区间分pkey储存,在流量峰值保证有内容透出。

凑单模型

▐  问题定义

给定用户勾选商品序列5b366ab184af7a5c7bdf0e763cc2245d.png,参加活动的活动标示coupon_id,距离下一满减门槛的推荐目标金额price_diff,我们需要建立一个排序模型,它能够给召回的商品集合327f52ec2a4abf16a268f5a1b0f6a018.png进行打分,不同于传统的点击率,转化率的模型,这个分数综合反映了用户凑单的可能性,最终将作为信息流商品排序的依据。其中,我们定义用户相关特征842b4c2f5a97f897152ace074958f757.png,商品相关特征9773176014962ebc56092d844316287a.png,用户序列特征8842973ba2ab4d2191d3b04fabda5e40.png,以及凑单场景环境特征1d49c48cc67f0a890980d38474337eb3.png,基于这些特征,我们搭建了凑单模型“Context Aware Item Add on Model”(CAAM)

▐  模型结构

如今排序模型中din被广泛使用并取得了较好的效果,我们的工作将基于attention网络推开。din模型的核心在于attention网络有很好的用户兴趣获取能力,凑单模型的搭建在din的基础上,试图将勾选商品集合作为用户强意图信号,新增一路对勾选商品建模的注意力网络(multi-trigger attention net)。同时,凑单行为和点击转化目标不完全相同,我们会引入用户更多的行为标签,直接拟合凑单行为成功率,新增多目标损失层(multiple loss layer)。具体结构如下图所示:

8a593b83059e6cec2bc8cb65ce2e31eb.png

左边部分为网络整体的结构,和din类似地使用了attention结构,最终将序列表达,UI表达连接作为wide层输入,输出一个分数预测logits,同时和三个标签计算cross entropy loss,并可学习地结合起来。右边上部分为多目标损失层,下部分为主商品注意力网络。网络最终输出一个0~1之间的凑单概率分数。最终的商品排序我们将仅依据此分数,结合一些过滤,打散策略,推荐给有凑单需求的用户。

▐  核心网络层


  • 环境特征挖掘

在购物车结算页面,用户主动勾选想要合并结算的商品,并拉取浮层进行筛选满减,凑单。这时我们就有了三个重要的环境信息:用户勾选的商品、加购但未勾选的商品,凑单目标金额(已勾选商品总价和下一满减门槛的价格差)。这三类型的特征我们都进行了建模,其中用户主动勾选的商品被视为用户意图的表征,在CAAM中新增了模块进行挖掘。在购物车但未勾选的商品,反映了用户一定程度的偏好,但是包含成因较丰富,我们仅将其作为补充特征。最后的目标金额,因为我们在最后的过滤逻辑中,已经保证了透出商品价格不能和目标金额相差过大,所以也将其作为补充特征。

在购物车相关的环境特征之外,我们还探索了上游模型信息,即召回阶段的环境特征。包含召回类型和分数,召回商品和用户行为间的类目重合度,用户对召回商品类目复购概率,复购周期等。

最后,因为每次活动覆盖面相差较大,活动玩法也不尽相同,我们引入了当下满减活动的一些信息,如时间信息,满减活动标示以及活动的满减门槛等。这三部分最终构成了我们富环境信息的特征体系。

  • Multi-trigger attention net(多trigger注意力网络)

f29b637857591eee02e508ca19423736.png

如上表所示,我们统计了采样用户在不同行为类型下(曝光点击加购成交)对应的商品与用户勾选商品(triggers)历史行为(abfs)的类目,一级类目交叉分。如triggers有10个,商品与其中6个是同类目的,我们计这条样本的交叉分为0.6。分析可见,用户勾选商品较历史行为商品与用户行为重合度更大。且随着行为类型的深入(转化记为最深交互,曝光记为最浅),商品与勾选商品,历史行为交叉分越高,说明我们的推荐应当保持高个性化,且需要对加购商品针对性建模。

用户主动勾选的商品反映了用户成交意图,是很强的先验信息,如果我们的凑单商品能够契合当前的意图,或是围绕它做意图发散,这样能够保证用户的个性化体验,促进快速成交。我们考虑将这部分信息建模在模型中,辅助用户兴趣提取网络的学习。

2d65c649fb6418573b154b96933ae54a.png

给定序列表征5d6cb58fc1ef39611b2fac1a09bb57cf.pngwith shape [T, E],勾选商品序列表征26f6b71521f904dc4072a19b496bc6fe.pngwith shape [C, E],待打分商品表征db4019753a51d4e5287adc2895a2bc35.pngwith shape [E]。其中T为用户序列长度,C为勾选商品个数,E为商品表示的映射维度。待打分商品与行为序列计算attention 就不再赘述,与din模型一致。multihead-attention layer这一层将进行勾选商品和行为序列间的attention计算,我们将6f0d366d36f0fd12a548afba422de5c1.png47b5cfbb119089e48f45af2829a0c8ca.png均延伸一维,并进行复刻,保证他们两者在计算attention之前有相同的维度 [T, C, E], 进而进行更换Q条件下的multihead attention。Trigger fusion layer 会将计算得到的张量,在勾选商品个数这一维度进行融合,具体计算过程如下:

835f2d8b63fec0f5ae38a47dc0c12b8d.png

其中我们借用了Multi-Head Attention (MHA)的结构, 但将其中的查询向量置为勾选商品表征。多头注意力网络可以表述为:

3e94f3cb82e7aaae2145ff23190b86f7.png

其中757962b080bb79167c108e5384531638.png为attention net可学习的网络参数 with shape [E, E];1873762fc5533910b2f2ddca9d171539.png为对应head可学习的网络参数 with shape [E/h, E].

由此我们得到两份attention weight3989dffafd825e281b6c14df6c7b1607.png7d780a4a401badd79524d4d607908826.png, Gate fusion layer 将这两份weight加权融合并与原始序列表征相乘,得到最终的序列表征:

fbce26ee09ef3970736cf5466db49834.png

  • Multiple loss layer(多元目标协同损失)

在multi-trigger attention net得到的用户序列表征,将与用户,环境,商品(待打分/勾选商品)等特征连接,输入到MLP中,再经过softmax函数得到一个分数预测logits,它代表了当前待打分商品被用户凑单的概率大小。我们考虑凑单是一个比较多元化的问题,它不同于点击,成交等指标,凑单是在价格处于可接受范围内,用户快速定位并加购转化的问题。同时我们统计到,该场景加购转化率在半数以上,加购转化用户比更高,这表明加购是很强的一个中间指标,也说明凑单行为是一个快速决策的转化问题。因而,我们考虑将用户的多元行为协同建模,直接学习曝光到凑单成功的概率。

我们设置了三组标签:曝光-点击、曝光-加购、曝光-转化。有了这三个标签,在模型最终输出一个概率logits后,我们计算得到三个loss,让模型同时去拟合这三个目标,然后将三者融合得到最终的总损失:

b172ac65d34c27e3a0cbb2dfe5698809.png

其余两个任务类似,再此不再赘述。这里三个损失做了平均融合,之后还可以探索自由可学习的范式。

▐  实验分析


  • 样本组织

我们会继承主图横滑场景的线上模型(训练样本200e)的参数,使用热启动的方式初始化模型,并使用本场景历史所有数据进行优化训练。样本组织上,为了有效的去除无效曝光,我们仅保留有点击行为的信息流样本,并将跳转详情页跳回信息流的样本去重处理。其中,曝光:点击样本比为30:1,点击:加购样本比为11:2,加购:转化样本比为3:2。

  • 离线实验结果

对比base模型,最优模型gauc提升1.36%。

167a7189626252bff298a4f5d5adc26b.png

Baseline: 使用私域大流量模型(主图横滑场景dtin模型,50d线上模型版本)参数初始化,使用本场景数据做finetune。


V1版模型:(context enrich) 在base模型基础上,新增了multi-trigger attention net,并丰富了环境信息特征。
V2版模型:在V1版模型基础上,新增了multiple loss layer。

  • 线上实验效果

对比无模型使用召回分排序策略桶,最优模型实验桶在各项指标均有大幅提升。

ed4816010cc579a7eede8f48f2a17241.png

Baseline: 使用召回分数排序;
实验一:使用CAAM打分作为依据进行排序;
实验二:使用CAAM打分作为依据进行排序+后置打散的策略;

项目整体效果

省心凑是标准的大促场景,仅在全平台满减活动时出现。同时场景为新场景无历年同期对比情况。在今年双十一及618第一阶段活动中,场景呈现出【高爆发】,【高转化】两个特点。在大促活动开始后,场景流量在不到三分钟内从0飙至峰值,对于链路瞬时抗压能力是较大的挑战。同时在拉动成交方面,引导成交,引导加购和人均场内成交都远远高出对比实验桶,是极佳的成交引导场。在今年618大促中,该场景已在购物车全量。

团队介绍

私域用户算法团队桥接淘宝、天猫商家与广大消费者,为用户打造更极致的商品/模块/内容推荐体验,并为商家提供运营策略优化解决方案。业务涵盖淘宝首页订阅/每日好店频道推荐,店铺/商品详情页面推荐以及智能策略,智能布局等开放场景算法服务。

我们为用户架构极致而体贴的使用体验,通过技术升级促进用户与商家的共振。不断拓展商业边界,促进平台和商家生态的供给繁荣。

✿  拓展阅读

e4d9ec3d8d32d998f61bb068a3145b31.png

29e10658dffb2f3a1d38a7b28e0aee07.png

作者|蔚川、朔玥

编辑|橙子君

2d7c2360374a1138aae1769a2fec67b1.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

618省心凑背后的新算法——个性化凑单商品打包购推荐 的相关文章

随机推荐

  • STM32系列(HAL库)——F103C8T6驱动WS2812全彩RGB模块(PWM+DMA方式)

    1 软件准备 1 编程平台 Keil5 2 CubeMX 2 硬件准备 1 某宝买的RGB模块 4个灯珠级联 2 F1的板子 本例使用经典F103C8T6 3 ST link 下载器 4 杜邦线若干 3 模块资料 1 模块简介 没什么比手册
  • 图像目标检测之cascade-rcnn实践

    最近一直在调试目标检测方面的模型 其中mmdetection中就集成了许多的目标检测模型 其中表现比较好的模型中有cascade rcnn 因此也趁这个机会具体了解一下这个模型的发展脉络 1 模型原理 在two stage模型中 常见都会预
  • 【网络云盘客户端】——项目简介

    项目简介 网络云盘客户端时基于QT C 框架实现了一个网络云盘客户端软件 主要功能包括用户的注册 登录 显示用户的个人文件列表 以及文件的上传 下载 删除 共享文件 登录界面 主窗口界面 文件属性对话框 文件展示列表 上传文件 详细实现参考
  • 【图像处理】 常用边缘检测算法对比分析

    边缘的定义 首先介绍什么是边缘 在数字图像中 边缘是指图像局部变化最显著的部分 边缘主要存在于目标与目标 目标与背景之间 是图像局部特性的不连续性 如灰度的突变 纹理结构的图标 颜色的图标等 尽管图像的边缘点产生的原因各不相同 但他们都是图
  • [操作系统] 分页存储管理中的页表项长度

    看到很多人有疑问 读到这里的时候我也有疑问的 在操作系统的分页存储管理方式中 写道 将页表始址与页号和页表项长度的乘积相加 便得到该表项在页表中的位置 于是可从中得到该页的物理块号 将之装入物理地址寄存器中 列出式子出来 页表始址 页号x页
  • Java excel poi 下载模板功能无法在Microsoft Excel 打开,但是可以WPS Excel打开

    问题 并且只显示前几个字段 后面的几个字段不显示 版本使用
  • 我的 Android 求职简历

    昨晚在Diycode的微信交流群里面 有位在校的童鞋想要找一份开发的实习工作 他把简历做好后在群上共享了一份 我看到后便下载了一份 看了看简历内容 我在想如果我是招聘单位看简历的 这份简历可以说是基本没戏的 因为内容基本和开发没有多大关系
  • Qt5Error:msvc-version.conf loaded but QMAKE_MSC_VER ins‘t set

    错误描述 msvc version conf loaded but QMAKE MSC VER ins t set 解决方案 这种情况一般都是修改了项目的配置之后出现的 也就是 qmake stash文件出错 删除这个文件再进行重新编译即可
  • 基于python的布尔盲注爆破脚本(sqli-libs第八关)

    写这个脚本的原因是因为布尔爆破步骤的繁琐 因此写下这个半自动化脚本来提升效率 只需输入url和标志词便可开始爆破 下面结合sqli libs第八关来详细说明 这一关是布尔盲注 布尔盲注用于页面没有回显的情况下 但是心细的同学会发现当我们注入
  • 使用Microsoft.Reporting. WebForms中ReportViewer报表查看器(Server方式)

    添加Web Reference http
  • Flex程序编译

    Makefile三要素 目标 依赖 命令 详解可见makefile 编写 周北 CSDN博客 makefile 编写 Makefile中常用函数和自动化变量 wildcard 扩展通配符 例 OBJECTS wildcard o 该找到目标
  • C++构造函数中不调用虚函数的原因

    今天在看网上一篇帖子的时候看到这个问题 试讲关于C 对象虚函数表和类型信息的 RTTI 的 正好看到了如下内容 这个是为什么在构造函数中不能调用虚函数的原因 因为任何时候在基类中的虚函数调用 都不可能到达子类的实现 因为子类的虚表初始化是在
  • [docker]搭建elasticsearch服务

    1 拉取镜像 docker pull elasticsearch 8 7 0 如果需要其他版本的话 访问 Dockerhttps hub docker com ela
  • QT从入门到入土(四)——文件的读写操作

    引言 文件的读写是很多应用程序具有的功能 甚至某些应用程序就是围绕着某一种格式文件的处理而开发的 所以文件读写是应用程序开发的一个基本功能 Qt 提供了两种读写纯文本文件的基本方法 用 QFile 类的 IODevice 读写功能直接进行读
  • uniapp中的分享功能实现(APP,小程序,公众号)

    uniapp中的分享功能实现 APP 小程序 公众号 1 APP端的分享 app端的分享可以直接使用uniapp封装的方法uni share uni app的App引擎已经封装了微信 QQ 微博的分享SDK 开发者可以直接调用相关功能 可以
  • Android交叉编译OpenCV+FFmpeg+x264的艰难历程

    前言 如果你没有兴趣看完本文 只想获得可编译的代码或编译后的产物 可以直接点击下面的链接 跟随步骤编译代码或直接下载我编译好的产物 注 编译顺序要按照 x264 gt FFmpeg gt OpenCV 这样来 x264 FFmpeg Ope
  • 使用less处理重复性background-image定位问题

    1 问题描述 使用angular的列表循环解释问题 其他框架类似 css上面使用flex布局 index html代码 div class container div class item div class div p class ite
  • CH3-HarmonyOS开发基础

    文章目录 背景 目标 一 APP 1 1 APP包组成 1 2 APP和HAP结构 二 Ability 2 1 Ability 2 2 pack info 三 libs库文件 3 1 HAR 四 resources资源文件 4 1 reso
  • shiro框架---关于用户登录退出接口的介绍

    接上一篇文章shiro框架 shiro配置用户名和密码的注意 项目已分享到GitHub上 如果需要的可以看下 springboot shiro项目Git下载地址 在我前几篇文章里有shiro配置的文件下载包 下载后里边有四个配置文件Shir
  • 618省心凑背后的新算法——个性化凑单商品打包购推荐

    作为购物导购链路的一个重要环节 凑单旨在快速帮助用户找到达成某个满减门槛 比如满300减50 的商品 完成性价比最高的跨店组合结算 前言 背景 凑单是一个历史悠久的场景 伴随着长期优化并不断升级 为用户决策提供了便捷通道 作为购物导购链路的