科学地花钱:基于端智能的在线红包分配方案 (CIKM2020)
简介: 红包是电商平台重要的用户运营手段,本文将介绍1688基于端智能技术开发的two-stage红包分发方案。这一方案持续在线上生效,相较于原有算法有明显提升。
一、前言
本文是作者在1688进行新人红包发放的技术方案总结,基于该技术方案的论文《Spending Money Wisely: Online Electronic Coupon Allocation based on Real-Time User Intent Detection》已经被CIKM2020接收,欢迎交流指正!
关于作者
李良伟:阿里巴巴算法工程师,邮箱 leon.llw@alibaba-inc.com
孙刘诚: 阿里巴巴高级算法工程师,邮箱 liucheng.slc@alibaba-inc.com
二、背景介绍
用户权益(包括现金红包、优惠券、店铺券、元宝等,图-1)是电商平台常用的用户运营手段,能够帮助平台促活促转化。 围绕着权益的技术优化也层出不穷[1,2,3,4,5]。
图-1: 1688新人红包
红包发放作为一种营销手段,其ROI是我们非常关心的一个指标,因为它直接反映了在有限的预算内红包为整个平台促活促成交的能力。优化红包发放的ROI要求我们把红包发到最合适的用户手上。而判断哪些用户适合领到红包需要我们在真正发红包之前判断当前用户的意图。举例来讲,一个购买意图非常明确、无论是否有红包都会下单的用户显然不适合领到红包;相反,红包对一个犹豫不决、货比三家的用户很有可能起到“临门一脚”的作用。
随着1688业务的快速发展,每天都会有大量的平台新用户涌入,其中有很多用户在整个阿里经济体的数据都十分稀疏,基于常规手段,我们很难对这种“陌生”的用户进行精准刻画。然而,只要一个用户进入了APP,或多或少都会和平台产生相互作用(滑动,点击等),这种在端上实时产生的数据能够帮助我们对用户尤其是新用户的实时意图进行精准捕捉,进而完成红包发放的决策。
本文将介绍我们基于端智能的用户意图识别和智能权益发放方案。
三、技术方案
从数学的角度,权益发放是一个带约束的优化问题。优化目标是关心的业务指标(GMV,买家数,转化率等),约束一般是预算约束,有时也会有其他约束比如发放疲劳度约束、单个用户领取红包金额约束等。
按照之前提到的先识别用户意图再进行权益发放这一思路,我们提出了一个two-stage的求解方案。在第一阶段,我们基于端智能技术[6],根据用户实时行为数据,通过瞬时意图识别网络(Instantaneous Intent Detection Network, IIDN) 识别出用户当前意图;在第二阶段,我们将优化问题建模成一个多选项背包问题(Multiple-Choice Knapsack Problem, MCKP),并运用[7]提到的primal-dual框架求解。在这里,我们强调我们关于IIDN的两个创新点:
1.IIDN最主要检测的用户意图是下单意图,但是实践发现在新人当中,用户下单的比例是比较小的,这样我们在进行下单意图识别的时候会面临一个类别不均衡的问题(下单:不下单 = 1:10甚至更低),这样的类别偏差会降低常见的分类器的分类效果[8]。为了解决这一问题,受到ESMM[11]和seq2seq[10]启发,我们引入了一个辅助任务:停留意图识别。我们随后会从理论上验证这一做法
2.我们采用encoder-decoder的结构,灵活地处理序列化的输入和输出
第一阶段:瞬时意图识别
图-2: IIDN结构
图-2是IIDN的整体结构,它由Embedding Layer, LSTM layer, Attention Layer, Encoder和Decoder五部分组成。接下来分别介绍。
Embedding Layer
模型的输入主要是实时用户特征和红包特征,用户特征包括实时特征(端上收集到的:点击、加购等)、历史特征(用户核身、年龄等),红包特征现在只加入了面额。这些特征是高度异质的,需要进行一步处理把它们映射到相同的向量空间中。我们采用[9]提到的嵌套技术,把原始的异质特征映射为长度固定的向量,并把该向量作为后续结构的输入。
LSTM Layer
我们红包发放的业务逻辑是:用户在详情页产生浏览行为并返回landing page的时候触发决策模型,判断给该用户发放红包的面额(0元代表不发放)。由于用户通常会产生一系列的详情页浏览行为,因此我们收集到的数据也是高度序列化的。为了更好地描述序列化数据当中的时间依赖关系,我们在特征抽取环节采用了Long Short Term Memory (LSTM) 来捕捉这种序列化信息。
Attention Layer
对于LSTM产出的序列化的feature map,我们使用注意力机制抽取当中的局部和全局依赖关系。我们将LSTM每层的输出都通过Attention计算权重并参与最终的结果计算。这样的好处是模型不仅关注LSTM最终层输出,还会关注逐层的输出结果,从而增加模型对于输入信息的感知能力。
Encoder
由于用户实时特征的序列长度不固定,而红包特征和用户历史特征是静态的固定特征,我们需要一种机制来进行有效的特征融合。受到Natural Language Generation (NLG) 当中语句生成的启发,我们采用一种seq2seq的结构:包括encoder和decoder,我们将在下一小节介绍decoder。这里encoder将之前产生的所有feature map作为输入,通过全连接层产生一个固定长度的向量,这个向量囊括了进行用户意图识别的一切信息,并作为之后decoder进行意图识别的依据。
Decoder
Decoder被用来输出最终的意图识别结果。在最开始,我们的模型只输出用户下单的概率,但是随着业务的深入,我们发现类别不均衡这一问题给结果预测造成了不小的干扰。在提高预测精度的实践当中,我们发现了一个有趣的现象:如果在进行下单率预估的时候在特征中加入用户在这次浏览之后是否离开这一信息,预测精度会有很大的提升。这引发了我们的思考:用户离开和用户下单之间存在什么样的关系。随后我们又做了一个实验:进行用户离开意图识别,并在特征中加入了用户两小时内是否下单这一特征。实验结果表明加入是否下单这一特征并不能给离开率预估的任务带来增益。这样的实验结果其实是符合逻辑的:用户能够下单的前提是用户一定要留在APP内不离开,前者的发生在逻辑上需要依赖后者的发生,因此在进行下单率预估的时候加入是否离开能够为模型提供一定的信息增益;相反,用户是否离开更多取决于用户当前的心态以及APP能否很好地承接他,用户是否下单并不能影响用户是否离开。我们可以认为:
由上式可以很自然地推导出下式:
可以看到,在进行下单率预估的时候(P的计算),用户停留意图识别(S的计算,或者说离开意图,二者等价)将可以用来作为辅助任务提升预测效果。我们的实验也验证了这点。
尽管在我们这一任务当中,我们只需要预测停留意图和下单意图,但是在之后扩展的场景中,更多意图也可以被识别:比如用户去往搜索的意图,用户去往新人专区的意图等。所有意图其实都像下单意图和停留意图一样存在一个逻辑上的先后关系(至少所有意图的产生都依赖于用户不离开),这样的关系使得我们想到了机器翻译当中语句生成:后一个单词的生成依赖于前一个单词的预测,这启发了我们在encoder-decoder的基础上采用seq2seq的思想:decoder会先生成S,并在此之上生成P。这样做有两个好处:
1.在一定程度上缓解了我们一开始提到类别不均衡问题:尽管不是所有用户都下单,但是所有用户一定会离开APP,离开意图识别并不存在类别不均衡的问题
2.我们这一套意图识别框架可以扩展到无限多的意图识别当中,只要提供先验的逻辑先后关系
我们使用普通的RNN完成每一个意图的识别。
loss设计
全局的loss是由停留意图识别和下单意图识别两个任务的loss相加得到:
其中CE表示交叉熵:
第二阶段:求解MCKP
根据第一阶段得到的实时意图$P$和$S$,我们在这一阶段完成红包的最终发放。我们将这一问题建模成一个多选项背包问题,我们作以下定义:
1.j用来索引红包,表示第j个红包,i用来索引用户,表示第i个用户
2.c_j表示第$j$个红包的面额
3.x_{ij} = 1当且仅当第i个用户被发到了j红包
4.\gamma 表示用户停留兴趣阈值,我们只给那些停留意图足够低的用户发红包,停留意图如果不够低我们认为他还会继续浏览,因此这次先不发放红包
5.P_{ij}、S_{ij}分别表示第$i$个用户领取到第$j$个红包以后的下单率和停留率
6.B表示全局预算约束
运用以上的定义,红包发放问题可以被写作:对于任意的用户,满足S_{ij} <= gamma,我们求解以下最优化问题:
为了求解以上问题,我们采用[7]提到的primal-dual框架。定义alpha和beta_j分别是相关的对偶变量,据此框架我们可以在线求解以上问题。具体来讲,x_{ij}可以根据以下公式求得:
通过上式求得的x_{ij}和j,我们就得到了最终的分配方案。
四、系统部署
目前在集团做端智能首推jarvis平台,在这里给相关同学点赞,在最开始的时候没少麻烦jarvis同学解决问题。运用jarvis,我们可以收集端上实时数据并将深度模型部署到端上。我们主要是将IIDN部署到端上,MCKP决策模型由于需要考虑全局最优,所以放在了服务端。
图-3: 系统大图
图-3是我们整体的系统架构,每一个用户在详情页回退到landing page的时候会触发决策模型,IIDN首先根据端上采集到的行为数据识别出用户的下单和停留意图,随后该意图会被推送到服务端参与最终的红包决策。我们这套系统在日常线上持续生效,同时还参与了0331商人节,助力买家数的提升。
五、实验
实验设置
我们从1688客户端收集数据,用到的特征如下表:
实验分为两部分:离线实验和在线实验。离线实验主要验证IIDN对于意图的识别效果,验证指标是AUC和logloss;在线实验主要验证我们二段式建模对于红包发放的效果,主要的验证指标是增量买家成本 (increment cost, ic),它被用来衡量每带来一个增量买家需要消耗的成本,计算公式如下:
离线实验
在离线实验环节,我们分别使用以下方法进行下单意图识别,并进行比较:
1.Logistic Regression (LR)
2.Gradient Boosting Decision Tree (GBDT)
3.DNN + RNN [12]
4.IIDN-single-LSTM (单层LSTM)
5.IIDN-non-attention (无Attention机制,使用简单的全连接)
6.IIDN-non-auxiliary-task (没有辅助任务的IIDN)
7.IIDN
离线结果如下表:
可以看到IIDN达到最高的AUC和最低的Logloss,这证明了IIDN的合理性。
在线实验
我们主要和另外三个发放方案做比较:
1.不发:该桶所有用户均不发红包
2.全发:该桶所有用户均发红包
3.uplift:我们采用广告营销当中常用的uplift方案,对每一个用户发放使他转化率提升最大的面额,同时该面额带来的转化率提升需要大于一定的阈值,否则不发放红包
在线效果如下表:
可以看到尽管全发桶带来的转化率提升最明显,但是它也带来了最大的增量买家成本。我们提出的方案不仅相对自然转化率提升了25.7%,同时也比全发桶的增量买家成本减少了44.3%,这证明了我们方案的优越性。
模型分析
学习曲线
图-4: 学习曲线
图-4展示了不同方法的学习曲线,可以看到LSTM, Attention以及停留意图识别任务均可以起到加速模型训练的效果。
单调性分析
正常来讲,红包面额越大,对于用户的刺激作用也越大,用户下单率曲线应该是一条关于红包面额单调递增的曲线,我们实验得到的曲线如下图:
图-5: 单调性曲线
可以看到所有模型基本呈现单调性,其中IIDN更加符合真实情况。
六、参考文献
1. 竞争网络下的智能红包发放(ATA)
2. 花钱,我们是认真的 -- 基于用户权益敏感与大规模分组背包的红包发放算法(ATA)
3. 2018双11:用户来而未购?用户购买意图识别与惊喜红包新玩法(ATA)
4. 社交营销(1):双11盖楼,红包有多少,楼有多高!| 基于社交裂变的C2C红包智能投放(ATA)
5. 商家增长引擎系列二:全生命周期商家建模与直通车智能红包(ATA)
6. Jarvis端上算法平台介绍(ATA)
7. Agrawal, Shipra, Zizhuo Wang, and Yinyu Ye. "A dynamic near-optimal algorithm for online linear programming." Operations Research 62.4 (2014): 876-890.
8. Chen, Ken, Bao-Liang Lu, and James T. Kwok. "Efficient classification of multi-label and imbalanced data using min-max modular classifiers." The 2006 IEEE International Joint Conference on Neural Network Proceedings. IEEE, 2006.
9. Guo, Long, et al. "Buying or browsing?: predicting real-time purchasing intent using attention-based deep network with multiple behavior." Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2019.
10. Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. "Sequence to sequence learning with neural networks." Advances in neural information processing systems. 2014.
11. Ma, Xiao, et al. "Entire space multi-task model: An effective approach for estimating post-click conversion rate." The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018.
12. Wei, Ermo, Drew Wicke, and Sean Luke. "Hierarchical approaches for reinforcement learning in parameterized action space." 2018 AAAI Spring Symposium Series. 2018.
延伸阅读
延伸阅读《阿里巴巴B2B电商算法实战》点我购买
推荐语:本书是阿里巴巴CBU技术部(1688.com)深耕B2B电商15年的经验总结。阿里巴巴B2B在战略形态上经历了信息平台、交易平台和营销平台的升级迭代,本书聚焦营销平台商业形态背后的算法和技术能力,试图从技术和商业互为驱动的视角阐述技术如何赋能业务,并结合阿里巴巴集团在基础设域和算法创新上的沉淀,打造出智能B2B商业操作系统。
科学地花钱:基于端智能的在线红包分配方案 (CIKM2020)的更多相关文章
- 基于CkEditor实现.net在线开发之路(1)
我以前的公司使用office sharepoint designer为界面设计器,嵌套各种自定义控件,进行各种管理软件,工作流的开发,遇到比较复杂的逻辑,则采用本地写类库,生成DLL上传到服务器,通过 ...
- 基于SSH框架的在线考勤系统开发的质量属性
我要开发的是一个基于SSH框架的在线考勤系统. 质量属性是指影响质量的相关因素,下面我将分别从6个系统质量属性(可用性,易用性,可修改性,性能,安全性,可测试性)来分析我的系统,以及如何实现这些质量属 ...
- 三个小白是如何在三个月内搭一个基于kaldi的嵌入式在线语音识别系统的
前面的博客里说过最近几个月我从传统语音(语音通信)切到了智能语音(语音识别).刚开始是学语音识别领域的基础知识,学了后把自己学到的写了PPT给组内同学做了presentation(语音识别传统方法(G ...
- 基于RestOn智能睡眠监测器的睡眠监测系统
一.项目地址为: https://github.com/linqian123... 二.项目功能概述: 该项目实现的是一个基于RestOn智能睡眠监测器的睡眠监测系统.RestOn智能睡眠检测器通过W ...
- 基于 Next.js实现在线Excel
如果要从头开始使用 React 构建一个完整的 Web 应用程序,需要哪些步骤? 这当然不像把大象装进冰箱那么简单,只需要分成三步:打开冰箱,拿起大象,塞进冰箱就好. 我们需要考虑细节有很多,比如: ...
- 基于4g智能路由器的充电桩远程监测管理应用
随着我国电动车保有量的持续增加,充电桩的需求也水涨船高,成为城市发展必备的基础设施之一.相较加油站,充电桩分布更广泛,部署场景更多样,与场景的融合程度也更深,诸如各类停车与充电二合一的站点.因此,对于 ...
- 基于CkEditor实现.net在线开发之路(7)列表页面开发动作介绍
一个列表页面不止是查询,它也包含了很多业务上功能的实现,这些业务功能的实现的逻辑我称之为动作.如触发单击按钮删除数据,更改业务表数据,调用webService,调用WCF接口,弹出新窗体新增.修改.查 ...
- 基于jquery的bootstrap在线文本编辑器插件Summernote
Summernote是一个基于jquery的bootstrap超级简单WYSIWYG在线编辑器.Summernote非常的轻量级,大小只有30KB,支持Safari,Chrome,Firefox.Op ...
- 基于ssh框架的在线考试系统开发的质量属性
我做的系统是基于ssh框架的在线考试系统.在线考试系统有以下几点特性:(1)系统响应时间需要非常快,可以迅速的出题,答题.(2)系统的负载量也需要非常大,可以支持多人在线考试(3)还有系统的安全性也需 ...
- 基于java开发的在线题库系统tamguo
简介 探果网(简称tamguo)是基于java开发的在线题库系统,包括 在线访问 后台运营 会员中心 书籍中心 管理员账号:system 密码:123456 因为线上数据和测试数据没有做到隔离,作者已 ...
随机推荐
- 基于 XAF Blazor 的规则引擎编辑器 - 实战篇
示例项目:https://gitee.com/easyxaf/recharge-rules-engine-sample 前言 继上一篇文章对规则引擎编辑器进行了初步介绍之后,本文将通过实际应用案例深入 ...
- dbvisualizer不能执行pl/sql块
如果是如下语句: begin dbms_output.put_line('Hello World!'); end; 控制台会报错 解决方案:语句改写为如下 --/ begin ...
- MD5算法:密码学中的传奇
MD5算法起源: MD5(Message Digest Algorithm 5)算法是由MIT的计算机科学家Ronald Rivest于1991年设计的一种消息摘要算法.MD5算法最初被用于提供数据完 ...
- 7.3万字肝爆Java8新特性,我不信你能看完!(建议收藏)
大家好,我是冰河~~ 说实话,肝这篇文章花了我一个月的时间,关于Java8的新特性全在这儿了,建议先收藏后阅读. Java8有哪些新特性? 简单来说,Java8新特性如下所示: Lambda表达式 函 ...
- C# 日志监控软件 基于 FileSystemWatcher
效果: 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...
- Springboot访问html页面
项目结构如图 1.html页面创建 在原有的项目resouces目录下创建static包,并在static下创建pages,然后在pages包下index.html. index.html内容 < ...
- 看看谷歌如何在目标检测任务使用预训练权值 | CVPR 2022
论文提出能够适配硬件加速的动态网络DS-Net,通过提出的double-headed动态门控来实现动态路由.基于论文提出的高性能网络设计和IEB.SGS训练策略,仅用1/2-1/4的计算量就能达到静态 ...
- KingbaseESV8R6识别IO使用率过高
前言 数据库正常运行离不开I/O的使用,在操作系统上,I/O又离不开存储的性能及使用方式,我们可以在存储层利用raid条带化技术使IOPS达到最佳性能. 本篇文章有助于确认数据库I/O使用率过高的原因 ...
- 【开源三方库】Easyui:基于OpenAtom OpenHarmony ArkUI深度定制的组件框架
万冬阳 公司:中国科学院软件所 小组:知识体系工作组 简介 Easyui是一套基于ArkTS语言开发的轻量.可靠的移动端组件库,它是对OpenAtom OpenHarmony(以下简称" ...
- OpenHarmony自定义构建函数:@Builder装饰器
前面章节介绍了如何创建一个自定义组件.该自定义组件内部UI结构固定,仅与使用方进行数据传递.ArkUI还提供了一种更轻量的UI元素复用机制@Builder,@Builder所装饰的函数遵循buil ...