前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快手 | 通过分桶的方式进行LTV预估

快手 | 通过分桶的方式进行LTV预估

作者头像
秋枫学习笔记
发布2024-02-27 08:30:59
2990
发布2024-02-27 08:30:59
举报
文章被收录于专栏:秋枫学习笔记秋枫学习笔记

标题:Billion-user Customer Lifetime Value Prediction: An Industrial-scale Solution from Kuaishou 链接:https://arxiv.org/pdf/2208.13358.pdf 会议:CIKM 2022 公司:快手

1 引言

本文是快手提出的用在工业场景的用户生命周期(LTV)预测方案,主要思想有三部分:1.提出了有序依赖单调网络(ODMN, Order Dependency Monotonic Network)对不同时间跨度LTV之间的有序依赖关系进行建模,解决现有模型对于跨度较长的LTV预估误差较大的问题;2.提出多分布多专家(MDME, Multi Distribution Multi Experts)模块,基于分而治之思想将整体数据分布拆分成多桶的数据子分布,解决LTV建模中数据复杂且分布不平衡问题;3.提出相对基尼系数,用于定量衡量模型拟合不平衡标签分布的能力。

2 方法

2.1 问题建模

给定固定时间窗口(比如7天)的用户特征向量x,预测其未来N天可以为平台带来的价值

LTV_N

,经验上可得出时间跨度越长,带来的价值越高。即:

LTV_{N-\Delta}\leq \dots \leq LTV_N \leq \dots \leq LTV_{N+\Delta}

多任务框架需要基于输入x去同时预测T个不同时间跨度下的LTV

\hat{y}=f(LTV_{N_1},LTV_{N_2},\dots,LTV_{N_t},\dots,LTV_{N_T}|x)\\ 1 \leq t \leq T,N_1 < N_2 < \dots < N_t < \dots < N_T
2.2 共享emb层和用户表征编码

如图所示,对于输入特征x,通过共享的embedding层,将其表征为低维度的连续向量。其中连续型特征会先进行离散化,对于一些长尾分布的连续特征,本文使用等频处理。最终将每个特征表征向量直接连接在一起作为最终的用户表示。

在真实的场景中,用户的LTV对于时间节点比较敏感,例如是否处在电商大促期间、是否周末或节假日等,因此输入中会加入周期性、季节性等特征。另外无论是在营销、广告还是其他业务中,不同渠道用户的LTV预测表现也有差异,因此,本文也添加了一些渠道相关的信息来增强模型对渠道维度LTV的预测能力。

2.3 多分布多专家模块(MDME)

由于不平衡的样本分布,长尾部分的样本很难学习好,这里指的分布是基于LTV值的分布。理论上模型从更平衡的样本分布中学习比从不平衡的样本分布中学习更容易。 受此启发,本文尝试将整个样本集按照LTV分布切割成多个片段,使得每个片段中LTV分布的不平衡程度得到极大缓解。

上图展示了MDME的结构,整个端到端学习过程由3部分组成:1.分布切割模块(DSM, Distribution Segmentation Module)实现了LTV的切分,即子分布多分类。样本集根据LTV值切分成多个子分布集合,模块需要学习样本和子分布之间的映射关系,这是典型的多分类问题,在此阶段样本标签定义为子分布数。2.子分布建模模块(SDM, Sub-Distribution modeling Module),根据子分布内样本的实际LTV值,进一步将每个子分布分成多个桶,把子分布建模转化为多桶分类问题,这样可以通过调整桶的宽度来保持桶内样本量大致相同,此阶段的样本标签是桶号。

经过两个阶段的标签重定义,整个LTV分布的建模难度大幅度降低,建模粒度降低到每个桶,此时各个桶中样本的LTV分布已经相对均衡。第3部分是学习桶内的数据偏差,本文采用min-max归一化方法,将桶内样本的LTV值压缩到0-1之间,并使用MSE回归建模压缩后的值。

模型结构上,DSM由分布分类塔(DCT, Distribution Classification Tower)和分布排序塔(DOT, Distribution Ordinal Tower)组成。SDM由桶内分类塔(BCT, Bucket Classification Tower),桶内排序塔(BOT, Bucket Ordinal Tower)和桶内偏置塔(BBT, Bucket Bias Tower)组成。其中DCT和BCT结构类似,分别实现子分布的多分类和子分布内的桶多分类。DCT中每个子分布的估计概率作为每个子分布内桶多项式分布的权重,以此获得整个LTV的归一化桶多项式分布。

2.4 归一化多项分布和独立单元

不同时间跨度的LTV值满足有序关系,比如

ltv_{30} \leq ltv_{90} \leq ltv_{180} \leq ltv_{365}

。传统的建模策略是利用独立模型来估计某一个目标,或者简单地基于多任务学习同时学习多个时间跨度的LTV。然而并没有充分利用不同时间跨度的 LTV 之间的有序依赖关系,本文认为这种有序依赖关系进行建模可以有效提高模型性能,通过几个隐含层参数非负的多层感知器(称之为对立单元Mono Unit), 将上下游LTV预测任务的输出层串联起来,使得前一个任务输出的分布信息可以单调地连接起来, 并直接影响后面任务的输出分配。 Mono Unit与每个任务网络的输出层连接的原因是越接近输出层,理论上隐藏层可以获得的任务相关信息越丰富。

2.5 多任务学习的细粒度校准和联合优化

对于每个MDME模块,与DSM模块相关的损失包括子分布多分类交叉熵损失

L^{c}_{t}

,子分布有序回归损失

L^{o}_{t}

,以及子分布蒸馏分类交叉熵损失

L^{dis}_{t}

。每个SDM模块的损失由桶多分类交叉熵损失

L^{c}_{st}

,桶有序回归损失

L^{o}_{st}

, 桶蒸馏分类交叉熵损失

L^{dis}_{st}

和桶偏差回归损失

L^{b}_{st}

组成。有序回归损失的定义如下:

\mathcal{L}^o(\theta)=-\frac{1}{B} \sum_{\left(x, y_t\right) \in \mathcal{D}}^B\left(\sum_{u=0}^{y_t-1} \log \left(\mathcal{P}^u\right)+\sum_{u=y_t}^{U-1}\left(\log \left(1-\mathcal{P}^u\right)\right)\right)
\mathcal{P}^u=P(\hat{l}>u \mid \theta)
\hat{l}=\sum_{u=0}^{U-1} \eta\left(\mathcal{P}^u \geq 0.5\right)

需要注意的是,DSM模块的学习需要使用所有样本,但对于SDM模块,只利用属于子分布或桶的样本来隔离训练样本。独立单元Mono Unit捕获上游任务输出的桶多项式分布的变化趋势,进而影响下游任务的输出分布,从而实现粗粒度形式的单调约束。为了进一步建模上下游任务之间的单调约束关系,本文对每个任务的估计LTV值进行细粒度校准。具体来说,如果上游任务估计的短期LTV大于相邻下游任务估计的长期LTV,则引入惩罚损失项:

\mathcal{L}_t^{\text {cali }}=\frac{1}{B} \sum_{\left(x, y_t\right) \in \mathcal{D}}^B \sum_{t=1}^{T-1} \max \left(\hat{y}_t-\hat{y}_{t+1}, 0\right)

综上,ODMN的损失函数定义如下,

\alpha

控制细粒度有序依赖校准损失的强度,

\beta

\gamma_{st}

决定每个蒸馏部分的损失:

\begin{gathered} \mathcal{L}=\sum_{t=1}^T \mathcal{L}_t+\alpha * \mathcal{L}_t^{c a l i} \\ \mathcal{L}_t=\mathcal{L}_t^c+\mathcal{L}_t^o+\beta * \mathcal{L}_t^{d i s}+\sum_{s_t=1}^{S_t}\left(\mathcal{L}_{s_t}^c+\mathcal{L}_{s_t}^o+\gamma_{s_t} * \mathcal{L}_{s_t}^{d i s}+\mathcal{L}_{s_t}^b\right) \end{gathered}
2.6 相互基尼系数

本文还提出了一种新的评估指标,称为相互基尼系数(Mutual Gini),基于洛伦兹曲线的定量衡量曲线之间的差异。如上图所示,绿色曲线是真实标签的洛伦兹曲线,红色曲线属于估计值,相互基尼定义为绿色曲线和红色曲线之间的面积A, 相互基尼系数越小,模型就越适合真实的不平衡分布。相互基尼系数的计算如下:

Mutual \_ Gini =\int_0^1|\Phi(x)-\Psi(x)| d x
\Phi(x)

\Psi(x)

分别是真实标签和估计值的洛伦兹曲线,相互基尼的定义帮助衡量LTV分布的整体准确性,而不是LTV预测的点估计损失

3 效果

未来30天、90天、180天和365天的LTV值预估对比

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 引言
  • 2 方法
    • 2.1 问题建模
      • 2.2 共享emb层和用户表征编码
        • 2.3 多分布多专家模块(MDME)
          • 2.4 归一化多项分布和独立单元
            • 2.5 多任务学习的细粒度校准和联合优化
              • 2.6 相互基尼系数
              • 3 效果
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档