Fork me on GitHub

阿里 B 类电商用户增长实践

导读: 用户量始终是衡量一个产品成功与否的重要指标,而搜索往往又是电商平台最大的流量入口。本次分享将介绍阿里B类电商平台1688的用户生命周期分析、全链路用户增长体系以及深度学习在搜索上的应用。

主要内容包括:

1. 用户增长

2. 搜索

3. 集单中控

▌用户增长

首先看一下1688的数据,可以看到从今年4月份开始,相对于去年,整体的DAU和买家数有大幅提升,这与1688整体的B类买家心智和内容导购场景密不可分,当然我们用户增长团队也做了很多的工作。

传统的用户增长理念是AARRR的理论,通过获取用户、激发用户、提高留存、增加收入和传播推荐。经过试验我们发现,召回一个流失用户的成本远远低于增加一个新用户的成本,所以增加了用户召回的环节,对处于4种不同生命周期环节的用户采用不同的策略。

潜客: 在用户还没有下载1688的时候,将用户称之为潜客。我们会在各个应用市场进行投放工作,在PC上做一些SEO的工作,当用户搜索关键词时,会引导用户下载1688APP。

新客: 当用户已经下载1688,我们希望用户成为老客,于是促进前三单的转化。本阶段会给用户投放各种新人权益,并且在搜索和推荐进行一些商品和权益的控制,降低用户的转化成本,提升1688的用户体验。

成熟: 当用户已经成为1688的成熟用户时,我们会希望用户对1688的粘性增强,这时会建设一些内容性的场景,让用户从只是搜商品到逛起来,提高用户留存的时间。同时,还会针对高活用户不定时的发push,发一些营销和权益的信息,让用户回来参加我们的活动从而形成长期的认知。

流失: 最后我们会利用用户流失率模型对用户的活跃状态进行监控,当模型判断出用户整体的活跃有下降时,会对用户做一些运营策略,例如发红包。同时还会跟头条等信息流进行合作,在头条投放广告从而召回流失用户。

这就是阿里1688用户增长的主路线。

1. 装机中控

1688在各大应用平台都可以搜到,这些应用平台有两种不同的流量,一种是自然流量,一种是广告流量。以小米应用平台为例,它有很多入口,如搜索广告、推荐入口和信息流入口等,这些入口基本都是收费的。其实我们整个团队每天都在花钱,但预算总是有限的,需要把钱花在刀刃上。因此业务方对我们提出了一个要求,即在装机预算一定的情况下,保证最大化的装机量和装机质量。装机质量怎么判断呢,其实就是用户装机之后的登录率和活跃度。当一个用户在APP中的活跃度足够时,他只要点点广告,1688都是有收益的,可能会把装机的成本都赚回来了。这就变成了带约束的不等式问题,求最大化的装机量、登录率和次日留存率。

右侧是给大家一个感官的认知,这是我们做的一个供运营使用的平台,运营只要输入一个预算数据,我们就会告诉他预计的装机量是多少,比如360投放多少钱、360每个位置出价多少钱,运营通过这样的方式进行投放。

下面我们从技术端对整个装机链路进行梳理:

首先是运营端确定预算,然后要进行出价,出价会和曝光量形成一个出价和曝光量的模型,这是一个单调递增的凹函数模型,当出价出到足够高的时候,曝光量就没有增长的空间了。App在应用平台曝光之后用户会进行点击,这其实代表用户对我们APP的一个心智问题,在一定的范围内,是一个线性模型。最后是点击量到三个目标的建模,其实各个平台用户质量的情况是不一样的,比如有的平台用户量会比较弱,平台可能就会有一些引导点诱导用户进行下载,由于用户是被骗进来的,因此用户很不活跃。所以我们对于各个平台的点击和装机登录留存模型都会进行单独的建模。有了这三个基础的模型,我们就可以对整体的模型进行带约束的不等式问题处理。

刚才我们要求的是三个目标,但三个目标无法直接求得。我们会先把两个次要目标改写成约束,主要目标是最大装机量,两个次要目标都是依存于主要目标的,根据次要目标的阈值设计它的步长。设定步长之后就会得到图中右侧所有的点。根据这些散点找到我们需要的帕累托曲线。帕累托曲线是说在这些点上,相对于里面的这些点,总有一个目标是最优的。得出这些点之后,我们就把这条曲线上的所有点都告诉运营,运营使用这些点,根据运营不同的投放目标,确定实际的投放计划。

2. 智能权益

前一段时间大家讨论的很热门的一个话题,是双11临近12点时的回血红包,有的人发了,有的人没发,其实呢,这就是算法工程师在后面作祟。

我们这边的权益有:

无门槛红包: 即不管消费多少都可以使用,但是无门槛红包很容易遭到黑产的攻击,如果大量使用无门槛红包,很容易被薅羊毛。

满减券: 即满多少减多少。

这两种红包都是平台级的,都是平台自己出钱的,因此对这种券的发放我们会严格控制。

商家优惠券: 由商家提供优惠。

一旦涉及到钱,财务把控就会非常严格,要求我们不该发的人不发、尽量省钱。什么是不该发的人呢?即有些人不发红包也会转化,这类人就不应该发红包。没有算法之前,运营会通过excel的方式进行发放。但对于几亿的用户,excel的方式很难解决问题。通过以前的方式,挑一部分人认为这部分人发的比较好之后,这次也使用这种方式,但是每次大促的方式是不一样的,经常会发生可能这个红包中午12点就发完了,要么追加预算、要么后面的人就领不到了,也有可能到晚上12点还没有发出去,因此需要通过算法来解决这个问题。

那么算法需要解决什么问题呢?第一个是发给谁,也就是刚刚财务的要求;第二个是发多少钱,我们也是很苛刻的,能发他2块钱解决的我们绝对不发他3块钱;第三个是什么时候发,传统的方式是用户进入APP就给用户发红包,那我们算法还是比较吝啬一点,在用户下单很犹豫临近流失的时候给用户发红包,回血红包大概就是这么一回事儿。还有一个问题是这个红包周期有多长,这涉及到心理学和博弈学的问题,假如一个红包的周期是7天,你可能就想着过几天再使用,然后后面可能就忘记使用了,红包就过期了。如果红包周期是2个小时,你会觉得这个东西很珍贵,就会选择马上使用。

对于红包价值评估主要有三个指标:第一个是核销率,即使用红包人数的比例,使用人数占比发放人数。第二个是增加买家数,我们会做严格的A/B实验,两组人群是相同的人群,但是对于B类人群我们希望有绝对买家数的增长。第三个指标是ROI,即最后成交量和花出去钱的占比。

我们的红包也经历了比较长的迭代过程:最开始就是一些固定面额的红包,大家都发一样的钱;然后我们会发离线个性化的红包,根据用户不同特点发不同金额的红包;然后是在线个性化红包,根据当天整体商品及大促的情况进行红包发放;现在我们在做全链路的智能红包,原来可能在搜索会发红包、大促会场会发红包,这些红包是单独预算、单兵作战的,现在要把这些红包全部聚拢起来,统一去做预算分发,在每种链路上、哪个场景适合分发做统筹安排,中间就涉及到各种机器学习、智能优化和智能文案的问题。

离线红包:

我们先来说一下离线红包。离线红包其实就是刚才说的目的,高转化用户,即没有红包就会下单的人,是不会发红包的;转化意愿低、金额敏感的用户我们才会发红包刺激他。

如上图硕士,权益敏感度模型是一个人在不同金额下转化率的概率。我们直观的感受,人对红包应该是一个单边正向的关系,发的价钱越大,其转化概率应该是正向的。我们先简单地用gbdt预测红包的转化率,可以看到gbdt里面几个重要的特征都是用户历史客单价和红包金额差的比例,这也符合我们整体的预想。

当我们拿到用户转化率预估时,可以做到一个背包问题,背包的大小就是奖金池的大小,物体的容量其实就是发红包的金额,使其达到最大化即所有用户的转化率之和是最大化的。

在线红包:

刚才说的是离线红包,其实每次大促的玩法都会不一样,大家每年天猫看到的都会不一样,通过各种装机进入APP的人群情况也都会不一样。原来离线红包是大促前一天离线用户全部算好之后,预估第二天访问用户的大致比例,整体和实际场景还是会不一样的。这时我们会使用在线红包算法,一个在线优化的算法。根据在线场景计算发红包的阈值,红包的阈值是和整体红包及转化率相关的函数。整体的推导过程这里就不详细介绍了。可以看出在线红包相对于离线红包会有比较大的增幅,图中红线是在线的情况,蓝线是离线的情况,可以看出整体发红包的数据是比较平稳的,在线花更少的钱转化更多的用户。

3. 智能PUSH

大家手机上每天会收到非常多的消息,片刻的时间可能就会有十几条消息,每个app都在做消息发放的事情,如何在众多app的消息中脱颖而出,其实是一件很难的事情。

先介绍下消息推送的整体过程。首先会有推送文案,包括商品信息、活动信息;然后会有商品图。消息推送最初的目标和红包其实是一样的,都是运营用来增加用户的APP打开率和首次打开率。通过消息推送促使用户访问app。其次消息发送的内容要恰当,如果推送的内容不适,用户可能会关闭消息通道,从而不能通过消息触达到用户。老板对我们的要求会更高,不希望用户今天是点了下消息来访问app,而是希望有长期的目的,通过点击消息使得用户对1688形成一种依赖和信任感,从而增加长期的DAU和MAU。总结而言,我们需要在合适的时间给用户推送需要的内容。

说到消息推送,先看一下,消息推送进来的场景是什么。

这个是我们的主会场,会场分为很多类,按行业分会有女鞋、服饰等各种分会场;按活动分会有九块九、工厂直供会场;按地域分会有华北、华南等。可以看到各个会场横向、纵向分类都有,是比较丰富的。

传统的圈选方式是A、B两类运营都去圈选人群,为了会场来的人尽量多,运营都会去圈高活用户,但是高活用户的兴趣可能不止一个,当一个用户有多个兴趣时,就可能被两个运营命中。消息推送是有疲劳度控制的,为了减少对用户的打扰,当一个用户今天已经收到运营A的push消息后,B运营的push消息就不能再发送。这个时候就会引发运营争夺用户,把发送push的时间尽量提前。对于这种自然竞争的状况,其实有的时候可能是不好的,对于运营而言,会场的活跃度是增加了,但是对全站而言可能整体push的打开率严重下滑。这个时候就需要算法解决这个争端。

算法是如何解决这个问题的呢?

商品匹配: 如上所言,我们有商品信息,这其实是一个传统的推荐问题,包括召回、排序、用户个性化的一些工作。

文案匹配: 我们其实还有图片匹配和智能文案的生成方式,并且需要保证整个文案的新鲜度。如果用户经常在APP看到同样的文案,大概率就不会再去点击了,因此需要保证一个人时常看到不同的文案。

全局分配: 接下来我们会做一个全局最优化的分配,这也是我们算法比较核心的价值。首先会有用户疲劳度的约束,一个用户一周只能发几次;然后还有一些行业控制,为了保证对每个行业都做到尽量公平,因此每个行业都会有最低发送限制。我们需要实现的就是整体打开率的最大。

时机建模: 前面流程都做完之后,发送的时机就很重要。大家自己应该会有个体感,自己早上忙碌了一早上,中午收到很多信息肯定不会去看,如果当使用手机的时候突然收到一条push,可能就会立马去点击查看。当然千万不要在用户打游戏或者看电影的时候推送。我们会做一个用户历史活跃度的分析,分析用户历史在哪个时段活跃,也会通过集团的其他相关数据找到用户实时活跃的状态。我们现在在尝试端智能,端外push的整体打开率是比较低的,当你正在使用app或者犹豫不决的时候,收到push后打开的概率是非常高的,我们一般用这种方式向用户推送爆款或者利益点。

会场承接: 会场承接也非常重要。当用户经常点击消息进入会场,找不到想要的商品的时候,就会觉得push是骗人的,因此需要把会场做好。点开商品的时候首先要做到"所见即所得",点开的商品要在会场第一个呈现。点开会场之后,会场的个性化排序和push的推送应该是相关的。最后我们还会增加一些权益引导,帮助用户对push进行了解。

4. 信息流投放

信息流的投放流程如下:

首先决定一个人是否应该投放,我们的投放目标人群是低活人群,如果一个用户不投放也会访问,是不需要进行投放的。然后我们会调用阿里系的一些数据用于特征工程建设,这是因为对于低活用户,1688自身的数据是比较少的。然后基于CTR预估报价,当我们报价到坑位之后需要确定投放素材,投放素材一般是商品。大家逛淘宝网站的时候会发现有时候为了爆光商品利益点,会在商品图片上写很多文字,就会造成一些牛皮癣。但是这种是下游网站所不允许的,因此我们做了很多图片处理的尝试。左图是有牛皮癣的,先对牛皮癣的图片进行抠图,然后对抠图后的图片进行复原。可以看到抠图的效果在整体边缘比较简单的情况下还是有不错的复原效果的。

▌搜索

我们团队很多一部分工作是在搜索上面,但是因为搜索是比较常规的一项工作,我主要介绍我们去年的一些实践。

1. 搜索综述

在电商领域,搜索是用户意图的直接表达,是电商网站流量的老大哥,用户数和转化率都是最高的。对于商家而言搜索是最关注的场景,因为搜索是获取新用户的主要场景。我们经常接到商家的投诉,咨询自己的商品没有排在前面的原因。搜索是用户增长转化的一个核心抓手。对于老板而言,搜索做的好,用户来的多,广告才能卖的好。搜索的整体流程如下:

输入Query: 首先我们需要输入Query。在PC端转移到APP端,APP端整体输入的代价会提高很多,整体用户的Query词也会短很多,这时我们发现精确Query词的转化率远高于泛化Query词的转化率,因此当用户输入"连衣裙"时,我们就要给用户推荐更精确的关键词,比如"韩版夏季连衣裙"做Query的推荐。

Query分类: Query分类是比较常规的一项工作,通过Query的语义信息和历史行为进行Query分类。

Query改写: 进行Query改写的原因,一是很多用户可能会输错词,二是一个名词可能有多种表达方式,而商家没有进行SEO。在Query改写里面会做同义词扩展,包括尝试了一些seq2seq的模型。

召回: 在召回阶段,一般搜索会比较严格,对应的是term的召回。Term召回之后会使用DSSM做语义召回。整个淘系现在还在尝试Query到图像的匹配以帮助商家进行长尾词的召回。

粗排: 粗排模型主要是过滤掉不好的商品,一般使用性能比较高的模型做粗排模型。

精排: 精排阶段最近出了很多顶会论文,会使用各种深度学习模型,下面会详细介绍。

重排: 重排主要是处理精排之后出现同质化商品聚集,避免用户一眼看到多个相同商品信息传递低下的情况,将同质化商品打散重排,以实现全局最优。

集成搜索: 最后是搜索内容化的建设,我希望搜索不只是商品的场景,而是包含文章、用户导购类的一些场景,从而让用户逛起来,停留尽量长的时间,帮助搜索健康发展。

2. Graph-based sequence representation

这里主要介绍我们去年用到的一个深度学习模型。现在深度学习的模型文章非常多,大部分都是推荐的文章,我们认为搜索的核心关键点在于Query。总结下我们做的一些尝试,跟业界主流是保持一致的:

算法主流更新方向:

  • 长短期用户行为序列:直接通过用户行为来表征用户特征

  • 多任务学习:从原来单一CTR的预估,到现在CTR、CVR以及类目预测做多任务训练,增加CVR模型的样本量,同时增加模型鲁棒性。

工程主流更新方向:

  • 模型更新:我们现在的模型越来越大,每个模型都要训练非常长的时间,因此我们需要一个比较好的增量模型更新方式来保证模型更新的最佳效果。

  • 模型压缩:模型大了之后耗时会非常长,大部分公司对耗时是非常严格的,因此大模型是很难上线使用的。因此我们会进行模型压缩量化的工作,减轻线上整体耗时,同时保证整体效果不出现明显下降。

介绍下我们去年Query的探索实践:

右侧的框是一个用户行为序列,首先需要将用户行为序列和Query关联使用,可以看到我们做了Query attention的工作。当Query是"多肉植物"时,会看到用户历史点击"多肉植物"的权重会明显增高,其他衣服类、耳机类的权重会很低。重点是这里,这是一个绿色植物,它可能里面没有任何多肉植物的词汇,但是它包含了用户对多肉植物等植物的偏好,所以也会出现比较大的权重。

然后对query做表征。传统的query表征可能就是对embedding求和或者求平均,我们这里做了一个算法查询的工作,我们认为query里面的词是有重要和不重要之分的。这里是一个实际的例子,用户搜"笔记本电脑拆机工具"时,其实用户不关心笔记本,也不关心工具,他们真正关注的是拆机这个词。

长尾问题是模型训练中的常见问题。我们会发现itemID随机初始化之后开始训练,由于没有几个样本,导致itemID根本训练不准,我们是如何解决这个问题的呢?我们希望通过高频商品去表征长尾商品,因此我们将所有的商品建了一张graph图,他们边的关系其实是商品共现的关系。在graph图中,根节点就是长尾的商品,通过它的一跳、二跳节点表征长尾商品进行共同训练,这样就把有监督学习和无监督学习有机地结合在一起。

▌集单中控

最后来讲一下集单中控,我先来介绍一下这个业务问题--为什么要做集单中控。大家知道,其实商家去生产一个商品时,是有固定成本的,比如设计费、模具费、运费等,当商家生产的商品卖出越多时,这些固定成本就可以进行分摊。那如果卖出越少固定成本就会集中在少量几个商品上面。在我们跟深圳的商家沟通时,发现他们非常愁的就是确定性的问题。小商家其实是没有固定的订单来源的,可能有时一天会有一万单,有时一天只会有1千单,但工人的开销是恒定的,包括做工的工人、运输的工人,所以他们需要确定性。然后确定性就需要一定的时间进行集单,保证整体的销量。当有了集中的订单之后,他们可以通过时间进行增长,从而降低成本,让利给用户,因此用户可以得到实惠。

上图是我们集单中控的模式。因为整体我们有各种各样的场景,但是每个场景的内容是不一样的,有些是低价爆款,有些是主打高品质。各个场景都会有单独的开发,如果大家都去做集单中控,就会变成各自为战的情况。因此我们来做这个工作,让大家简单地接入集单中控。

我们有一个中控模块,各个场景对于这个模块其实是一个配合的状态,通过这些场景的数据流,得知商品在各个场景的坪效,把中控系数分配给各个产品。这也是我们去年的一个工作,因为希望流量不被浪费,所以我们的中控需要在24点前完成。根据当天流量表现进行分配,确定中控系数,最开始我们通过PRD的一些方式去调控,然后通过强化学习进行优化。

今天的分享就到这里,谢谢大家。

职位内推:

1688是阿里集团起家的B类事业部 ( www.1688.com ),近年来在阿里集团新零售战略下,承担源头工厂货供给的任务,近三四年业绩非常优异。

我们主要贴合业务做算法研究与应用落地,如果你有搜索推荐,机器学习、NLP、图像技术、运筹优化等相关基础知识和应用经验,欢迎加入我们!社招和2021年毕业生都需要,简历请投:


本文地址:https://www.6aiq.com/article/1582693785988
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出