Posts

Showing posts from December, 2020

干过一些流水预测的活儿

Image
0x00 Introduction 前一阵在某个手游厂做了一些关于流水预测的工作,这里记录一下。 流水预测,这个课题字面意思就是为了预测后续一段时间内公司的流水情况,比如大到一个商场,小到一个小区门口的小卖部,都会想知道自己未来比如1个月的流水如何。 0x01 Keywords CLV(customer lifetime value) ; LTV(lifetime value) ; BTYD(Buy Till You Die)  0x02 Problem 把流水分成两部分,一部分来自已有用户的贡献,另一部分是目前未知的新用户带来的流水。 这里讨论的只是对于老玩家流水的预测。 在对老玩家LTV预测的问题上,一个分类维度是是否有合同:Contractual/Non-Contractual。有合同指的是我能知道我当前有那些用户,他们分别会在什么时候流失,即合同终止时间,这个适用于比如会员制的超市。实际情况下,对于互联网时代,更多的是Non-Contractual情况,并不能确定的知道用户/玩家什么时候就流失了。 这里我所遇到的也是 Non-contractual Problem。 0x03 Approaches 1. Naive Method 在手游这个domain,比如要预测未来一天的流水,通常人们采取的做法是:根据一些历史经验,估计出那天的DAU,然后乘上付费玩家占比,再乘上他们的平均付费值 2. BTYD 1987年,MIT的David C. Schmittlein发了一篇文章【1】其中提出了一个生成模型,用来预测未来一段时间内老用户的购买次数。模型称作PNBD (Pareto/NBD)。 这篇文章的Intuition是根据每个用户历史购买信息,计算出这个用户在T时刻的存活概率 P(Alive | Information) * 这个用户在(0,T] 的总计购买次数期望 = 这个用户从出生(0时刻)到T的累计购买次数预测。 这里David基于5条假设来给出他的模型: 对于每个用户个体层面: 每个用户当还存活时的购买过程服从 Poisson Process ,参数为$\lambda$ ($1/\lambda$代表两次购买的平均间隔) 每个用户随着时间推移,还存活的概率服从 Exponential distribution ,参数为$\mu$ (代表死亡率) 在整体层面: