首页 > 其他分享 >Google LTV预估文章:A DEEP PROBABILISTIC MODEL FOR CUSTOMER LIFETIME VALUE PREDICTION(ZILN)

Google LTV预估文章:A DEEP PROBABILISTIC MODEL FOR CUSTOMER LIFETIME VALUE PREDICTION(ZILN)

时间:2022-12-01 23:47:02浏览次数:99  
标签:CUSTOMER ZILN Google LTV mu 对数 sigma 正态分布

背景

分享一篇Google在做用户LTV预估方面的文章。LTV(life time value) 意为用户生命周期价值,每个人或者公司对价值的定义不一样,传统市场下,LTV的定义为

在传统的经济学、市场学当中,LTV经常会被应用的场景是:在一个超市中去分析来这个超市的人的整体的LTV,即LTV=Average Value of Sale *Number of Transactions * Retention Time Period,然后再做一个宏观的数据统计和预测。(ref: datafun&快手LTV )

在这里,我姑且定义为某种生命周期内所创造的价值,比如GMV,对应到本问题,就等于预测某个人在未来一段时间内的GMV、购买量或者其他你所定义的价值标准,一般来说,这是个回归问题。

那么诸如此类建模问题,最为头疼的就是整个数据分布糅杂了多种分布:

出现这样的分布的原因是:

  1. 他可能是可新客户 (0价值部分极端膨胀)
  2. 他可能只来了一次之后很长时间也没动静,或者来了就给你搞个大的,然后销声匿迹(尾部价值存在峰值)
  3. 有些人来多次,但每次价值很小(指数分布)

综合来看,这些原因导致了LTV预估难以预测,而且大部分模型实验mse作为代价函数,而mse恰巧无法准确的拟合0膨胀问题,且对于极值部分又极端敏感,因此G家这篇文章特意提出了
处理这种混合分布的概率估计算法:zero-inflated lognormal (0膨胀对数正态分布, ZILN)。
此前,这种0值比较多的回归问题也被称作0膨胀泊松分布问题,具体是使用两个模型,一个分类模型预测是否是0, 另一个回归模型预测回归值,但如此分开建模的方式对分类模型的准确率要求比较高。

对数正态分布 (lognormal dist)

我们先了解一下对数正态分布, 简单的理解就是任意随机变量取对数后服从正态分布,则认为这个随机变量服从对数正态分布:

对数正态分布的概率密度函数为:

\[f(x; \mu, \sigma) = \frac{1}{x\sigma \sqrt{2\pi}} e^{-(\ln x - \mu)^2/2\sigma^2}, \quad\quad x>0 \]

其中,\(\mu\)和\(\sigma\) 分别是均值和标准差。该pdf的期望为:

\[E(X)=e^{\mu+\sigma^2/2} \]

\[VAR(X)=(e^{\sigma^2}-1)e^{2\mu+\sigma^2} \]

ZILN Loss

上面说的mse面临的一些问题,诸如无法准确的拟合0值,对高价值用户敏感,然而0膨胀的方式又比较麻烦,需要维护2个模型,容易造成误差累计,由此提出了对数正态参数估计模型
首先对概率密度取负对数简化计算:

\[L_{lognormal}(x; \mu,\sigma)=log(x\sigma\sqrt{2\pi})+\frac{(logx-\mu)^2}{2\sigma^2} \]

这部分的参数会用于拟合指数分布部分,实操中,需要对label取个对数以满足正态分布的hyposis,对于0的部分,则用2分类交叉熵就ok了,那么我们就得到end2end的loss:

\[L_{ZILN}(x; \mu,\sigma)=-Sign_{\{x=0\}} log(1-p)-Sign_{\{x>0\}}(log p - L_{lognormal}(x; \mu,\sigma)) \]

\[L_{ZILN}(x; \mu,\sigma)=L_{CrossEntropy}(Sign_{\{x>0\}})+Sign_{\{x>0\}}L_{lognormal}(x; \mu,\sigma) \]

其中,交叉熵部分表示是否为0。

如何估计pdf中的三个参数:\(p,\mu 和 \sigma\)

谷歌这里使用nn来预估三个值,其loss定义已推出

实际效果


从累计增益曲线可以看到,ZILN的效果会优一些,该曲线可以理解为用于评价连续值上的排序能力,因为本身LTV的预估不可能精准
具体画法为:

  1. 先把label将序排列,然后分成多个percent,或者可以理解为等宽buckets,这里是100,每个buckets里存储LTV的总和
  2. 把预测的LTV也丢到buckets里,算总和
  3. 得到一条累计分布曲线,曲线下的面积即为GINI系数,用这个系数的大小来表示模型的性能。

从中也可以观察到,大约20%的用户贡献了超80%的LTV,所以label曲线最上面是平的。

标签:CUSTOMER,ZILN,Google,LTV,mu,对数,sigma,正态分布
From: https://www.cnblogs.com/zhouyc/p/16943042.html

相关文章