push是用户促活和内容推广的重要手段,通过对推送形式、内容、时间等push元素的个性化定制,
push可以成为产品的延伸,在脱离app的情况为用户提供服务。push的形式多样,比如邮件、站内信息、短信等。
Pinterest:
linkin:
部分组件说明:
推送名单、文案名单、召回名单等名单获取组件采用统一的构建思路:列表构造器+参数控制组件+名单拉取组件+名单池
名单拉取组件:连接池+调度,负责通过传入的参数从各个数据源拉取名单并进行组合拼接。
名单池:保存在各个地方的名单数据源。
参数控制组件:参数池+参数解析,保存了名单池中各个名单如何拉取,有什么内容等的参数信息,会产出一个有效参数列表。
列表构造器:接受名单参数后,生成想拉取数据源的名单,通过参数控制组件拉取对应数据源的参数配置,组成名单参数列表后从名单拉取组件拉取具体数据。
质控重排等都在这个组件里面。
名单服务架构:
1.负责根据配置定时发起调度执行推送。
2.在数据量级较大时负责对部分数据源进行预加载。
3.负责检测推送是否执行成功,当执行失败时能够重启。
1.负责组合文案。
2.负责从信息素材中脱取推送目标对应资料。
3.负责整合文案成最终推送信息状态。
粗排:用户侧单塔+ item分群X文案 为target,点击为训练目标。
精排:用户+item双塔,留存为训练目标。
1.有心跳用户:查找breakpoint, 通过breakpoint筛选用户推送消息(yahoo)。
2.离线用户:登陆地离线breakpoint,N类预测。
3.用户生态形成+产品变现和推广:用户生命周期+用户角色形成+活动或产品推广。
1.预算模型预测目标噪音小,相对稳定且有效。模型以给定预算下用户在下一周是否会再登陆为预测目标,一定程度上排除了单天由于工作等因素导致无法登陆的异常情况。
2.学习能力更强的多目标优化算法。通常多目标优化的效用函数是线性函数,通过大量手工特征工程实现非线性信息表达,我们采用的多目标优化算法可以使用更复杂的非线性模型。
3.文案更加个性化。push item采用信息体的结构,由落地页、文案、文案填充三个个性化内容组成。
4.推送时间打扰更小。推送时间采用个性化空闲时间+常用空闲时间+打散时间3层控制,推送预算给出后模型会优先给预测的用户可能空闲的时间进行推送,然后再在常用空闲时间推送,最后会控制推送频率。
push核心要处理3个问题:1.什么时候推;2.推多少;3.推什么内容。本文主要讨论在对缘App通知场景下的推多少问题。
app中push送量级控制的需求如下:
1.推送总量给定,方便后期分频道做频控
2.要求每个用户给定个性化推送后总的用户留存收益最大
直观上讲,上述问题是在给定条件下的一个优化问题,总体来说可以分为建立留存收益得分和最优化两个部分。
在给用户推送push后,总的可以分为两种情况:
1.用户收到了push,之后的交互行为受到了push影响;
2.用户没有收到push,之后的交互行为没有受到push影响。
假设没有收到push我们默认为关push,收到push为没有关push。我们先做出一些符号阐述,假设给用户推送push量级为m,用户留存事件为a,
留存概率为p(a|m),开推送事件为o,p(a|o,m)表示用户在没有关push的情况下留存的概率,关推事件为c,p(a|c,m)表示用户在关掉push的情况下留存的概率,
p(c|m)表示用户关push的概率。依据条件概率公式和全概率公式,留存收益公式如下:
也就是 p(留存|预算)=p(关推|预算)*p(留存|不关推,预算)+(1-p(关推|预算))*p(留存|关推,预算),则留存收益可以由p(a|o,m),p(a|c,m),p(c|m)3个条件概率公式获取。
我们对这三个条件概率公式分别使用XGB建模,把预算作为其中一维特征,方便后续优化。
在得到每个用户的周预算得分模型后,我们修改不同周预算的输入,可以得到用户在不同预算情况下的得分序列。比如预算分别为[1,2,3,4]对应的留存概率为[0.1, 0.2, 0.2, 0.4],
我们遍历出所有预算的留存概率,在对缘App场景周预算不超过 S ,其中S小于50,所以能很快获取所有分数。有所有分数的情况下,可以获得每个用户最高留存概率和该概率对应的推送量。
由于不同推送量所带来的边际收益是不一样的,比如用户a,b推10能到0.5的留存,推12个a能到0.8的留存,b能到0.6的留存,在分配的时候我们尽量优先给边际效益高的用户增加推送预算。
我们设定一个阈值,这个阈值和推送量级挂钩随着推送量级增大而增大,当留存概率与最高留存概率的差值小于阈值时认为这个推送量符合我们的需求。整体算法流程如下:
阈值对应参数的搜索算法如下:
可以看到,算法中存在大量的循环处理部分,这些都可以通过spark等大数据框架实现,从而提高线上运行时的整体效率。
1.在得分计算公式中,关推与否其实可以看作一个在不同推送量级下的决策过程,在这种情况下,push推送可以转化成为一种动态决策过程,把强化学习方面的内容引入。
根据用户在当天对push预算的反馈建立不同的决策模型,从而提升模型的实时效率。
2.推送量级的限制可以从单源控制变成多源控制。比如现在只限制总共推送数量为M ,在上述框架下可以改成[小米推送N,华为推送Q] 这种方式,其中 N+Q = M。
对不同的推送渠道进行不同的优先限制并并行运算,这样在保证计算效率的同时可以兼顾推送效率。