重要的是,当人们来到Twitter时,可以很容易地找到他们感兴趣的内容和对话,并与之联系。我们做到这一点的方法之一是向选择加入的人推送推荐内容的个性化通知。在这篇博客中,我们将分享我们如何使用机器学习技术来确保人们看到适量的相关和及时的通知。
背景介绍
使用机器学习来个性化客户层面的通知数量的第一步是选择我们要考虑的客户反馈的类型。客户采取的两个被认为是 "积极 "的重要行动是登录平台和选择接收通知。因此,为了衡量我们通知系统的有效性,两个非常重要的指标是 日活跃用户(DAU)和 可及性.到达率衡量有多少人选择接收来自Twitter的通知。
增加通知的数量可能会在短期内增加DAU,因为我们有更多机会让客户参与到来自Twitter的内容中。然而,一些客户更喜欢有限的或更少的通知,并可能选择通过选择不接受通知来表达这一点。这就限制了我们通过通知所能联系的人数,从而降低了可及性。此前,我们通过在全球范围内试图在DAU和可及性之间找到一个全球性的平衡,将每日最大推送通知的数量,又称推送上限,对所有客户都是一样的。两个后续通知之间的时间间隔也是这样设定的。然而,经过测试、学习和讨论,我们意识到正确的推送上限对每个客户来说都是不一样的,因此我们决定使用机器学习来个性化我们的通知方式。
个性化推送上限的一种方法是根据客户的行为将其分为群组(具有类似属性的客户群体),然后通过实验学习并找到适合每个群组的最佳推送上限。我们创建了由隐马尔可夫模型(HMM)衍生的客户群,该模型考虑了客户的登录和通知打开行为,并发现网格搜索方法对某些群组很有效。
客户群为某些客户提供了一种轻量级的、直接的个性化推盖方式。然而,为了进一步改善客户体验,我们在多层感知器模型(MLP)中对客户登录和可达性行为进行建模。我们使用这些MLP作为效用最大化框架的输入,为给定的客户找到一个个性化的推盖。这种方法在某些群组中改进了网格搜索的推盖。然而,对于其他客户群,特别是那些很少与产品互动的客户,因此有稀疏的信号,轻量级的网格搜索方法表现得最好。在生产中,使用了一种混合方法,结合了两个模型的推盖。
推送上限与控制最近推送间隔的逻辑密切相关。我们把这些间隔称为疲劳。对于多层感知器模型(MLP),我们将疲劳与我们模型中的推压帽共同个性化,而在隐马尔可夫模型(HMM)中,疲劳被简单地设置为24除以推压帽。
这条微博不可用
客户状态队列建模
队列是一个基于共享客户行为的类似客户群体。使用队列使我们在总体水平上比在客户水平上更容易学习到最佳推送上限,因为我们有更多的数据可以学习。我们使用隐马尔科夫模型来得出客户(群组)的潜在状态,这提供了关于他们在推送通知上的行为的有用信息。我们对客户日常登录和推送打开行为的长序列进行了HMM模型的训练,使用了以下三种行为。
-
不登录。客户在某一天没有登录应用。
-
登录但不打开。一个客户在某一天登录了应用程序,但没有打开推送通知。
-
**打开。**一个客户在某一天打开了推送通知。这包括 "打开并登录"。
为了调整状态的数量,我们用不同的状态数量训练了多个HMM模型,并选择了一个既能给我们一个稳定的系统(高自我过渡概率),又能对登录和打开有良好预测性能的数量。下图描述了一个假想的三状态马尔科夫模型。
这条微博不可用
为了确定每个客户状态的最佳推送帽,我们在一个在线A/B测试框架中进行了网格搜索,对每个客户状态的一系列推送帽进行实验。我们选择了一个对登录和可及性指标都表现良好的推送上限。对于较轻的客户状态,基于客户状态的推送帽比每个客户个性化的推送帽表现得更好。这个系统很容易维护,只要底层HMM预测客户已经过渡到一个新的客户状态,就会更新客户的推送帽。
多层感知器模型
虽然基于队列的推送帽提供了比固定推送帽更优越的性能,但我们可以通过利用其他客户特征对推送帽的反应的异质性来改善这一点。然而,建立一个具有更复杂特征的基于状态的模型很快就会变得不方便。相反,我们建立了客户登录和可及性行为的反事实模型,可以利用更大范围的客户特征,预测任何给定的客户将如何回应任何给定的推盖。
这些预测是在一个相当长的时期内进行的,以捕捉尽可能多的长期客户行为,而不是随着时间的推移逐渐消失的短期反应。例如,一个客户可能会通过经常登录和打开通知来回应高推送上限,但最终对通知变得不敏感,导致登录率下降。这个时间窗口仍然很短,我们需要将可及性行为作为登录行为的长期领先指标来建模。我们用两个月的时间来为这些模型生成标签。
一旦这些模型被训练好,我们就把它们输入一个效用最大化的框架中,这个框架将两种类型的客户反馈都考虑在内。虽然我们可以观察到每天的登录行为,但可及性是更持久的,我们只考虑客户在我们的时间窗口结束时是否可及。
参数ɑ被引入以控制每个目标的相对重要性。对于一个具有特征𝑥和推送上限𝑐的客户,我们的效用𝑈*_𝑥(𝑐)定义为=𝐄[#登录|𝑥,𝑐]+ɑ*𝑝(可达性*|𝑥,𝑐) 。
例如,对于一个有特征的顾客,我们给他分配argmax 𝑈*_𝑥(𝑐*)的推盖,其中最大值是在候选推盖中取得的。当ɑ=0时,我们分配具有最高登录预测的推送帽,但随着ɑ的增加,我们选择有利于和保护可达性的推送帽。
对于一些客户来说,基于模型的推盖分配效果很好。但是对于其他不经常使用平台的客户,推盖模型几乎没有信号可以学习。对于这样的客户,网格搜索的推盖有更好的性能,同时更容易维护,所以在实践中我们只对一部分客户群使用基于模型的分配。
结果
通过我们的推盖分配系统,我们观察到iOS客户的DAU为+0.62%,可及性损失不明显;Android客户的DAU为+0.39%,可及性损失不明显。
结论
客户对推送通知量有不同的偏好。通过利用机器学习来个性化推送体验,我们可以根据客户的需求,用最佳的通知量来通知他们。然而,机器学习并不是一个适合所有客户群的万能解决方案。基于基于HMM的客户状态模型来调整推送帽,我们可以通过混合方法为某些客户群实现更好的指标。
鸣谢
Push-cap个性化是由Stephen Ragain, Prakhar Biyani, Jay Baxter, Jesse Kolb, Manish Vidyasagar, Lilong Jiang, Shaodan Zhai和Bowen Liu开发的。感谢Quannan Li、Tom Hauburger、Sayan Sanyal、Jeremy Browning、Frank Portman、Lohith Vuddemarri对项目和这篇博文的支持。特别要感谢领导层--Foad Dabiri, Rani Nelken--对这个项目的支持。
---
[1]使用机器学习估计异质性治疗效果的金属earners。Sören R. Künzel, Jasjeet S. Sekhon, Peter J. Bickel, and Bin Yu.
此微博不可用