作者:闲鱼技术-深宇
背景
在互联网行业中,为了增加用户对产品的粘性,常常会针对性地开展用户运营活动。以红包活动为例介绍运营活动的一般流程。首先根据以往红包活动具有对不同活跃度的用户产生不同促活效果的经验,将用户群体划分为低活、中活、高活人群;其次为了提高用户的次日留存率,设计了预约次日领取红包的方案,红包的内容比如“现金宝箱”或者“金额范围”需要通过圈定样本人群进行AB实验,根据AB实验的显著性以及次日留存率结果选择较优的设计方案;最后将活动上线推向大盘人群,进行后续的数据总结和分析。
痛点
AB实验过程中分析次日留存率指标存在一个制约,即对于T+0天实验的活动,短时间内只能得到曝光率、点击率、领用率等活动相关的直接可观测或计算的指标,然而对于活动的T+1留存率只能在T+2的时候才能获取得到,导致整个实验周期变长,不利于运营对活动的快速响应。
仿真方案
针对上文提到的响应周期长的痛点,我们希望通过数据仿真的能力来辅助运营作出及时的活动预判及调整。
整体仿真方案为从历史相关活动日志数据中拉取小时级数据,按照人群标签进行归类,通过监督学习算法训练模型;设计相关指标,在新活动短期小时级数据上进行预测,并对比效果差异。
要实施仿真,需要在有限数据下尽量提高预测的准确率。有两个问题需要考虑:1)怎样组织数据 2)怎样设计预测模型。
数据组织
历史相关活动选择一类具有共性的活动。比如增长类活动、大促类活动等。人群标签应该具有代表性和通用性,圈选的人群参与过历史相关的活动。
小时级数据在每天整点进行数据累加,比如9点的数据统计的是0点到9点之间的结果,10点的数据统计的是0点到10点之间的结果,可以看出10点的数据包括了9点的数据。这样累加的好处是缓解了时间点较早参与活动人数较少时,统计数值出现随机误差的问题。
数据组织成如上的层次结果。一个特定的活动,参与人群通过特定的标签进行分类,每个标签人群又可以通过标签值进行分组,每组标签值下的人群再进行AB实验分桶,最后统计每个桶中人群的小时级数据。还是举最开始的例子,对于预约红包活动,人群可以通过标签“用户活跃度”、“是否敏感人群”、“买家最近30天成交数”等标签进行分类。在“用户活跃度”这个标签下,人群又可以根据“低活”、“中活”、“高活”进行分组,每组人群再进行基准桶和实验桶分桶,最后统计每个桶人群的小时级数据。
模型设计
模型的设计和指标本身的类型相关。在仿真模型中,指标主要分成三类:观测指标、实时指标以及延时指标。其中观测指标为通过埋点日志可以直接得到的,比如活动曝光人数、红包使用人数、app卸载人数等等;实时指标为通过观测指标能计算得到的指标,比如红包使用率可以通过红包使用人数和领用人数计算得到;延时指标无法通过观测指标或实时指标直接获得,比如活动的次留率,需要在T+2才能获得。
1)实时指标的预测模型为:
2)延时指标的预测模型为:
实时指标模型设计为在T+0天实时指标X在t时刻的预测值等于从0到t-1时刻指标X在f1模型下的预测结果。
延时指标模型设计为在T+n天延时指标Y在t时刻的预测值等于T+0天t时刻观测指标或者实时指标X1、X2……XN在f2模型下的预测结果。
模型预测
这一小节主要介绍延时指标预测模型f2。T+n天t时刻延时指标Y与T+0天t时刻观测指标或者实时指标X1、X2……XN之间存在较高的非线性性。主要尝试的模型为CART、GBDT、NN。
1)CART:分类回归树。可用于分类或者回归,是一种二叉树,根据是否满足条件将特征不断二分,在回归问题中用平方误差最小作为特征切分的准则,最后将特征划分成N个不相交的区域,后续进行回归时,根据输入样本的特征,一步一步往下,使得样本落入N个区域中的其中一个,使用这个区域训练样本的平均值作为样本预测的结果。下图中假设延时指标Y包括X1,X2,X3三个特征,回归树在构建时基于切分前后平方误差最小的准则,得到a1,a2,a3三个切分值,整个回归树划分成Y1,Y2,Y3,Y4四个区域。预测时新的样本数据根据X1,X2,X3特征值一步一步往下落入Y1,Y2,Y3,Y4四个区域其中的一个,用这个区域的平均值作为预测的结果。CART 算法比较简单,结果可靠,虽然有剪枝操作,但模型仍然会存在过拟合的问题。
2)GBDT:梯度提升决策树。GBDT采用CART树结合boosting集成学习的思路来提高回归的精度。GBDT每一轮CART树的训练是在上一轮训练的残差基础之上进行,这里的残差就是上一轮CART树模型的负梯度值。下图中延时指标Y仍然包括X1,X2,X3三个特征,CART1基于切分前后平方误差最小的准则将回归树划分成Y1,Y2,Y3,Y4四个区域,计算每个训练样本的负梯度残差,送入CART2中进行拟合,CART2基于切分前后平方误差最小的准则将回归树划分成Y5,Y6,Y7,Y8四个区域。依次迭代下去,每轮CART树都是拟合前一轮CART树的残差。举个简单的例子,假设有个样本次留率为0.8,第一轮CART预测的结果为0.6,第二轮CART会对0.2进行拟合得到0.15,第三轮CART会对0.05进行拟合得到0.03,依次下去直到达到最大迭代次数。预测时新的样本数据根据X1,X2,X3特征值依次运行每棵CART树得到最终的累加结果。
3)NN:神经网络。不管是CART还是GBDT,都是通过模型驱动的方式来进行学习,即需要选择合理的切分准则。神经网络则是通过数据驱动的方式来进行学习,通过不同的网络连接方式来学习输入数据和输出结果之间的映射关系。一般的,神经网络通过将输入层、激活层、全连接层、正则化层以及输出层组织成不同的网络拓扑结构。下图中延时指标Y仍然包括X1,X2,X3三个特征,首先对每个特征进行减均值除方差的预处理,然后分别经过全连接层、RELU激活层、Dropout正则化层,最后通过sigmoid函数输出Y的预测结果。
结果
快速仿真功能已经应用在闲鱼的增长以及冲高活动中,以闲鱼的222冲高活动为例,包括八个活动会场:水果会场、优惠卡券、日用百货、水果、服饰会场、珠宝文玩、游戏礼包以及畅销图书。每个活动主要的实时指标为人均ipv、跳转点击率、购买率以及发布率等。使用所有的观测指标以及实时指标,建立次留率的预测模型。
以2月21日11点的数据做验证,表1展示的是八个活动在所有人群标签下的结果(只对曝光人数大于100的数据进行处理)。从表1中可以看出整体上NN和GBDT的均方误差要小于CART。
下边左图展示了八个活动在所有人群下三个模型次留率的比较结果,可以看到服饰会场活动中,NN预测的次留率要明显差于GBDT和CART预测的次留率,游戏礼包活动中,NN预测的次留率要明显好于GBDT和CART预测的次留率。右图随机选择了服饰会场在标签"最近180天闲置买到笔数"下人群不同模型次留率的比较结果,可以看出预测的次留率和真实值比较接近。
表2展示的是八个活动在所有人群标签下的结果(只对曝光人数大于50的数据进行处理)。从表2中可以看出整体上NN和GBDT的均方误差要小于CART。与表1相比,当曝光人数限制从100降到50时,均方误差明显变大。说明当人数较少时,实时指标存在一定的随机误差。
展望
上述介绍了如何快速进行活动仿真,包活仿真方案中如何进行数据组织,如何根据指标类型设计模型,然后选择合适的模型进行预测。未来更进一步可以继续研究在曝光人数较少时如何得到更准确的预测结果、如何将相邻小时级数据的影响加入到预测模型以及怎样通过预测结果给出进一步的运营建议。