作者|刘玉明1.背景在游戏场景中,通常会有各种各样的玩法价值设计。由于不同用户在偏好、游戏体验等方面存在差异,相同的价值并不适用于所有用户。例如,在关卡闯关游戏中,对于新手来说,设置关卡的难度系数可以低于有经验的玩家。为了让用户有更好的游戏体验,我们可以基于算法对用户进行个性化的数值控制,从而提高用户在游戏中的时长和留存率。传统的监督学习方法侧重于对响应结果Y的预测,而我们的场景更关注变量变化对结果Y的影响。业界通常在因果推理的框架下讨论此类问题。我们通常称变量为T(treatment),变量变化引起的结果Y的变化称为TE(treatmenteffect)。用于估计TE的模型称为因果模型(UpliftModel)。目前业界常用的因果模型有meta-learner、dml、causalforest等,但尚未综合比较不同因果模型的优缺点和实际表现。因此,在我们的场景中,我们详细探讨了这些问题。本文将从理论和实践两个方面对不同因果模型的优缺点和适用场景进行对比分析,希望能在以后处理类似问题时为大家提供启发和帮助。2.常用模型介绍2.1Meta-learnerMeta-learner是目前主流的因果建模方法之一。它使用基本的机器学习模型来估计不同治疗的条件平均治疗效果(CATE)。常用的方法有:s-learner、t-learner。Meta-learner的思路比较简单。本质上是用base-learner学习不同treatmentgroup的user的Y,然后相减得到te。不同的是,在s-learner中,所有的treatment数据都是在一个模型中训练的,treatment通常作为模型的一个输入特征。t-learner为每个治疗组训练一个模型。2.2双机器学习在meta-learner中,中间变量的预测误差导致我们在进行uplift预测时先天具有偏差。为了解决这个问题,DML引入残差拟合、交叉拟合等方法进行去偏处理,最终得到无偏估计。DML的核心思想是通过拟合残差来消除中间变量偏差的影响。论文中证实误差的收敛速度比n^(-1/4)更快,保证了最终估计结果的收敛性。下图是论文中不使用DML、使用DML不使用交叉拟合和使用DML-交叉拟合的效果对比:2.3GeneralizedRandomForestsGRF是一种广义随机森林算法。与传统随机森林算法的区别在于,传统随机森林算法在做分裂时,是寻找lossdrop最大的方向进行分裂,而GRF的思想是寻找一种能够使差异最大化的分裂方式两个子节点的干预效果之间。和RandomForest一样,GRF也需要构建多棵树。每建一棵树,也需要随机采样,不放回。抽取的样本一半用于造树,另一半用于评估。GRF算法延续了DML的思想。在第一阶段,使用任何机器模型来拟合残差。在第二阶段,GRF算法引入评分函数Ψ(Oi)、目标函数θ(x)和辅助函数v(x)。打分函数的计算公式为:很容易看出,打分函数Ψ(Oi)其实就是残差,通过公式Y=θ(x)T+v(x)得到。算法求满足局部估计方程的θ(x):对于所有的x,满足:其实本质上就是学习θ(x),使得实验组预测结果与对照组数据的差异并且真实值是最小的。3.评估方法目前因果模型常见的评估方法有两种:upliftbins和upliftcurve3.1Upliftbins会分别用训练好的模型预测实验组和对照组的测试集数据,以及upliftscore两组人的关系可以分别得到。按照upliftscore降序排列,分别截取top10%、top20%、...top100%用户,计算每个分位数下两组人的得分差值,这个差值可以近似认为是分位数下对应人群的真实提升值。upliftbins的缺点是只能做定性分析,无法比较不同模型的效果。3.2Qini曲线在upliftbins的基础上,我们可以画一条曲线,用类似AUC的方式来评价模型的性能。这条曲线称为隆起曲线;我们不断细分数据组的数据,精确到样本维度时,每计算前t个样本的增量,就得到对应的提升曲线。计算公式为:其中Y_t^T表示实验组样本在前t个样本增量时的转化量,N_t^T表示实验组累计达到t时实验组样本总量,和对照组是一样的。如上图,蓝线代表提升曲线,黑实线代表随机效果。两者之间的面积作为模型的评价指标。面积越大越好,说明模型效果优于随机选择的结果。与AUC类似,我们称此指标为AUUC(AreaUnderUpliftCurve)。4.业务应用4.1样本准备因果建模对样本的要求比较高,样本需要服从CIA(conditionalindependenceassumption)条件独立假设,即样本特征X和T相互独立。因此,在进行因果建模之前,需要进行随机实验来收集样本。通常,通过A/B的方式将用户随机分配到不同的治疗中,观察用户在不同治疗下的表现。4.2样本构建样本构建与常规机器学习的样本构建步骤基本相同,但需要特别注意以下几个方面:特征关联:用户特征X必须严格使用进入随机实验组前的特征,对于例子:用户T日进入实验组,则User的特征必须使用T-1日及之前的特征。这样做的原因是,用户进入治疗后,一些特征可能已经被治疗的影响改变了。使用受影响的特征进行模型训练可能会造成信息泄露,从而对模型效果产生较大影响甚至逆转。角色。目标选择:在某些情况下,治疗的影响需要一段时间才能生效。例如,调整道具数量对用户留存的影响可能需要一段时间才能体现出来。因此,在选择目标时,可以选择周期较长的目标。例如,选择7天保留或14天保留比次日保留更好。但是,周期越长越好,因为较长周期的目标可能会增加模型的学习成本,降低效果。这种情况在小样本场景下更为突出。选择合适的目标可以大大提高模型的在线性能。4.3模型训练在我们的场景中,用户每次完成任务发放的道具数量是治疗,用户留存和用户活跃时间变化是我们关注的提升。在实验过程中,我们先后比较了s-learner、t-learner和dml的效果。三个模型选择的base-learner是lightgbm。在实验过程中,我们发现当使用s-learner对活跃时长进行建模时,无论我们如何调试模型,得到的治疗效果都是0,即不同治疗下用户活跃时长的预测结果是相同的。但是当我们把模型换成t-learner或者dml的时候,治疗效果数据就恢复正常了。输出s-learner的特征重要性,我们发现treatment特征的重要性为0。我们分析了不同treatment下的useractivity数据,发现不同group的activity数据几乎没有弹性,即useractivity不同处理下变化不大。但是s-learner对这种微小变化的敏感度较低,所以效果并不好。t-learner在训练的时候,会针对每一种处理训练一个模型,相当于显式增加了处理特征的重要性,而dml在训练过程中主要关注训练残差,所以这两类模型的效果是比s-learner好。这也体现了s-learner在数据弹性不足时的不足,所以在后续的训练中,我们放弃了s-learner,主要关注t-learner和dml。在后续不同指标的离线评估中,dml模型的效果明显优于t-learner。这也与理论相印证:t-learner引入了中间变量,中间变量的误差使得最终的uplift的预测有偏,而dml最终通过拟合残差实现了无偏估计。4.4CrowdAllocation根据训练效果,我们选择dml作为最终的估计模型,得到不同处理下用户的uplift值。我们会根据用户在不同处理下的提升值进行分组。根据实际情况,分配方案主要分为有约束或无约束的人群分配和有约束的人群分配两种。无约束条件下人群分配:只关心优化指标,不关心其他指标的变化。那么我们可以根据人群分配的贪婪思想,为每个用户选择提升值最高的策略。约束下的人群分配:在关注优化指标的同时,对其他指标的变化也有一定的约束。我们可以通过约束求解来解决这类问题。在我们的业务场景中,我们对用户留存、活跃时间、流水等目标也有限制,所以我们实现了约束条件下的人群分配方案。4.5实验结果基于训练好的dml模型和约束分配后的结果,我们开始了在线A/B实验。经过数周的测试,与基准策略相比,我们的策略在营业额和活跃度等指标没有下降的情况下,实现了自信的10%+留存收益。目前,我们基于因果模型的策略已经全面启动。五、总结及后续展望因果模型在互联网各个场景进行了实践和应用,取得了良好的效益。随着营销活动越来越多,营销手段越来越复杂,处理的维度也逐渐从普通的多处理向连续处理转变,对样本和模型学习能力的要求更加严格。在后续工作中,可以考虑从多目标建模、场景联动、无偏估计、强化学习等方面继续优化,为每个业务场景产生更大的价值。
