sql 如何建立多个用户_如何建立数学模型估算日活用户数?

新增、留存、日活是APP产品的通用指标。如果某一天,被问到以下的问题,你会怎样分析:

  • 按照现有的趋势,下季度我们的日活能达到多少?
  • 下季度的日活目标是xxxx万,为了达到它,我们的新增用户计划是每天xxxx万,你觉得这个计划合理吗?

下面会介绍,我们如何通过新增和留存,对未来的日活进行估算。

日活是『堆积』起来的

堆积过程

我们都知道:

  • 任意一天的活跃用户,是由历史每日的新增用户堆积而成的。
  • 新增用户从获取的第2天起,活跃的数量逐渐衰减;越早的新增用户,仍然活跃的比例越小。

下图:以模拟数据表示日活的堆积过程,横轴为日期序列,纵轴为活跃用户数。选取任意一天,如图中红色垂线;垂线被分割的每一段,代表历史某日的新增用户到达当天的活跃数量,越靠近横轴的部分表示越早期的新增,最上面的一段表示当日新增:

ef2f0c7dcbe24860f6d6c40a410587be.png

堆积表达式

为避免啰嗦,约定符号如下:

  • 假设我们处在产品历史的第
7abae67d064a3f79617a460b3a7a80d4.png
  • 天,需要估算历史第
095c9dc03859f4b4b3f55e66cce4577e.png
  • 天的日活
6e2766cc724ae3d6ac4c42c77fffe776.png
  • 表示第
b055e41dbba60d341710c0bb9ce0e941.png
  • 天的日活
00d343c40f0765d4ae5e8868c8b61f6b.png
  • 表示第
b055e41dbba60d341710c0bb9ce0e941.png
  • 天的新增
bf56b9007a83ac3a44f13a9fc7d6f85e.png
  • 表示第
b055e41dbba60d341710c0bb9ce0e941.png
  • 天的新增在获取第
0fd2fb7deff4de471d3db51c3b5b1a63.png
  • 天的留存率;对任意的
b055e41dbba60d341710c0bb9ce0e941.png
  • ,获取当日的留存率为100%,即
f4ae630a7c137e97b7197b3e2ff72f94.png

于是,估算的目标表示如下:

3c83495629f75ff204f9251c54eb5802.png

观察以上等式右侧,我们需要以下输入数据:

00d343c40f0765d4ae5e8868c8b61f6b.png
  1. ,每天新增用户数。对于
0eb0d4b3b21b37101aaa030dedd7b21e.png
  1. ,对应历史每日的新增用户数,是已知项;对于
d18336e6f39659b4239cbe37632397e1.png
  1. ,对应未来新增用户的计划,是直接输入项。因此这一项不需要额外计算。
78e33c0b6367b271a87ba6ce1c328b84.png
  1. ,每天的新增用户,到达第
095c9dc03859f4b4b3f55e66cce4577e.png
  1. 天时的留存率,是未知项。

于是,我们只需要搞定

bf56b9007a83ac3a44f13a9fc7d6f85e.png

,也就是留存率的衰减规律。

糟糕,历史数据一直在变

看起来,似乎大功告成了,留存率

bf56b9007a83ac3a44f13a9fc7d6f85e.png

从DB里拉出来不就行了吗?但是关于留存率还有两个问题:

  • 历史的留存率有变化:未来的日活与历史每天有关,英语流利说已有3年的历史,期间的各种变化,不能用平均值这种粗糙的方式处理
  • 需要更远期的留存率:虽然有了3年的数据,还需要更远期的留存率数据;例如:为了估算半年后的日活,就需要新增用户3年半以后的留存率

下面来解决这两个问题。

解决历史留存率的变化

变化的原因

首先分析为什么变化,以及初步的解决思路:

  • 短期:由渠道拓展、运营活动引起的留存率变化。对于这种情况,是可以用平均值处理的
  • 长期:由产品迭代、用户习惯养成引起的留存率变化。对于这种情况,直接的方法是,对历史每天的新增用户维护留存率序列
ef595f250c8fe647c60a764509804767.png
  • ,例如第1天新增用户次日、3日……N日留存,第2天……第N-1天新增用户的次日留存。这种方案的问题是:
  • 计算复杂:每次估算都要追溯整个历史
  • 早期的留存率并不能对后期有绝对影响:用户在经历多个版本的产品升级后,体验发生变化,即使对每天的新增用户维护留存率序列,未来的留存率衰减速度不一定完全延续历史趋势

变化的解决方案

以当前日

7abae67d064a3f79617a460b3a7a80d4.png

作为划分,估算表达式右侧拆分成2项:

35c8994073b7820d4f2f06bb071123d7.png

考虑等式右侧第一项:其中

4474489a9df1e2ecec95c0ddade6bf15.png

为历史第

b055e41dbba60d341710c0bb9ce0e941.png

天的新增在今天的留存率,

49c542af0b397778f4959b65c591347b.png

就是在今天的留存人数。其中每日留存率依赖历史第

b055e41dbba60d341710c0bb9ce0e941.png

日的情况;而

6916cb49f755f52f528c270aa046638d.png

是从当前日

7abae67d064a3f79617a460b3a7a80d4.png

到第

095c9dc03859f4b4b3f55e66cce4577e.png

日的留存率衰减比例,从业务逻辑上,仅与当前和以后版本的产品使用有关,受历史当时的影响较小。

因此我们放弃维护不同

b055e41dbba60d341710c0bb9ce0e941.png

应的

bf56b9007a83ac3a44f13a9fc7d6f85e.png

,定义

ff26ff54c646dc513c15983887716ad6.png

为第

b055e41dbba60d341710c0bb9ce0e941.png

日的日活中,历史第

0fd2fb7deff4de471d3db51c3b5b1a63.png

日新增贡献的人数,于是:

65114f9c2810b1b327f0d6412319112d.png

表达式改写为:

a4ba491f960e898d13723403aef08443.png

其中

e392708bfe276d0f1734c73ec6e30149.png

是对当前日

7abae67d064a3f79617a460b3a7a80d4.png

的日活分解,可以直接计算作为输入。

也就是说,对任意

7be519ec764aab088e7aa9e255bb67b7.png

不再看当时获得了多少新增、经过了怎样额衰减;而只看目前还『剩下』多少活跃用户。而对『剩下』的用户,从今往后的衰减规律,取决于当前和以后的产品形态,受历史版本影响较小。

改写后的表达式中,所有与

bf56b9007a83ac3a44f13a9fc7d6f85e.png

相关的项,受历史影响较小,因此可以进一步简化:忽略

b055e41dbba60d341710c0bb9ce0e941.png

,使用近期 (例如1年) 的留存率概括值作为输入

9be6ab4b371f9e1c12161f0b6f4d9deb.png
c8578be123542fa19e57a2f7b59dcb8b.png

解决更远期的留存率

就差搞定

493cfb9f6b673d0d8146f19d46181743.png

了!我们采用了曲线拟合,获得更远期的留存,顺便对近期留存做一个概括。

通常情况下,拟合并不是严谨的方法,从统计模型的角度,属于偏差最大、泛化能力较弱的一种。此处使用拟合方法,隐含了对留存率衰减趋势的经验假设。

函数那么多,应该用哪一种?为此,用相邻日的留存率相除 (前 / 后),定义为留存率衰减比例,对近期样本作图如下。可见:在大约某天后,留存率的衰减比例接近恒定,可以理解为用户进入『稳定期』;此后每一天的留存率,等于前一天留存率乘以一个相对稳定的系数,由此想到了指数函数。

5d24f5285bf837dde4e947fcdec17e5f.png

然而指数函数对衰减稳定之前的阶段并不适用,可以将指数项改成天数

的幂函数:

21c0cf81276dd212a3abe293f111c441.png

对衰减稳定前、稳定后的样本,用以上函数分段拟合。将等式两边做对数变换,成为线性函数

9201612c91c67eb171ec69d1ae1077c1.png

求解参数的方法:参数

8ee5548f5abd8039dfce667cf03301ff.png

采用最小二乘法计算;并以最大化 Adjusted R-squared 为目标,对参数

ea48c8fc4f7114c7c3a3097285d71c7d.png

进行 Grid Search。分段拟合的结果

b954dff0526f1ebf27128e33a589d05b.png

是一个分段函数,曲线如下,其中灰色半透明点表示留存率样本,红蓝曲线为分段拟合结果:

06ae5e962551e94ed3e403bd645cfb1f.png

至此,解决了所有的输入问题。

总结

最终,模型的输出为

95116f67940d8ce67237f5ed36365b13.png

,实际输入为:

749c8e4c7dcddaead2cb144b3faec79b.png
  • ,当前日
7abae67d064a3f79617a460b3a7a80d4.png
  • 的日活中,属于历史第
b055e41dbba60d341710c0bb9ce0e941.png
  • 天新增用户的数量;为了更加稳定,可以用最近几日的均值
f722d22980baf6da679d35feb23e634c.png
  • ,明日起,直到第
095c9dc03859f4b4b3f55e66cce4577e.png
  • 日的每日的计划新增用户数,可以是一个变化的序列
5d644bec292c7cb33ebdd6071ca33870.png
  • ,近一段时间 (例如1年) 的每日留存率序列样本

在建立估算模型之前,业务部门更倾向使用一些经验估算方法,例如:利用日活 / 新增比例。经验方法的优点是简单;缺点是:依赖的假设条件可能发生变化,而由于方法过于简单,我们并不能解释这些变化,甚至不知道变化的幅度可能有多大。例如,我们并不知道日活 / 新增以后会变成什么样,但我们对于留存率是有预期的。

相比之下,模型的优点是:使得每一项输入尽可能在控制范围内,并对历史的变动不那么敏感。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值