因果推断在游戏个性化数值中的实践及应用

标签: 因果 游戏 个性 | 发表时间:2022-05-17 11:54 | 作者:字节跳动技术团队
出处:https://juejin.im/backend?sort=monthly_hottest

一、背景

在游戏场景内,通常有着各种各样的玩法数值设计。由于不同用户在偏好、游戏经验等方面存在差异,因此同一数值并不适用于所有用户。例如一个闯关游戏,对于新手来说,设置关卡的难度系数可以比有丰富经验的老玩家低一些。为了让用户能够有更好的游戏体验,我们可以基于算法对用户进行个性化的数值调控,从而提升用户在游戏内的时长、留存等。

传统的监督学习方式聚焦于响应结果 Y 的预估,而我们场景更关注于变量的变化对于结果 Y 的影响。在业界,这类问题通常会放在因果推断(Causal Inference)的框架下进行讨论,我们通常将变量称为 T(treatment),变量变化带来结果 Y 的变化称为 TE(treatment effect),用来预估 TE 的模型称为因果模型(Uplift Model)。

目前业界中比较常用的因果模型有 meta-learner、dml、因果森林等,但是不同因果模型的优劣势及实际表现还没有做过很全面的对比。因此在我们场景中,我们对上述这些问题进行了详细的探索。

本文将从理论及实践两方面,对比及分析不同因果模型的优缺点及适用场景,希望能够为大家在后续处理相似问题时,提供启发及帮助。

二、常见模型介绍

2.1 Meta-learner

meta-learner 是目前主流的因果建模方式之一,其做法是使用基础的机器学习模型去预估不同 treatment 的 conditional average treatment effect(CATE),常见的方法有:s-learner、t-learner。meta-learner 的思路比较简单,本质上都是使用 base-learner 去学习用户在不同 treatment 组中的 Y,再相减得到 te。区别在于在 s-learner 中,所有 treatment 的数据都是在一个模型中训练,treatment 通常会作为模型的一个输入特征。而 t-learner 会针对每个 treatment 组都训练一个模型。

图片

2.2 Double machine learning\

在 meta-learner 中,中间变量的预测误差导致我们在进行 uplift 预估时天生存在 bias。为了解决该问题,DML 引入了残差拟合、cross fitting 等方式进行消偏处理,最终得到了无偏估计。

图片

DML 的核心思想就是通过 拟合残差,来消除中间变量的 bias 的影响。论文中证实了误差的收敛速度快于 n^(-1/4),确保了最终预估结果的收敛性。下图展示了论文中不使用 DML、使用 DML 但不使用 cross fitting、使用 DML-cross fitting 的效果对比:

图片

2.3 Generalized Random Forests

GRF 是一种广义的随机森林算法,和传统的随机森林算法的不同点在于,传统的随机森林算法在做 split 时,是找 loss 下降最大的方向进行划分,而 GRF 的思想是找到一种划分方式,能够最大化两个子节点对于干预效果之间的差异。和随机森林相同,GRF 也需要构建多棵树。在每次建树时,也需要随机无放回的进行抽样,抽取出来的样本一半用来建树、一半用来评估。

图片

GRF 算法延续了 DML 的思想,在第一阶段时,使用任意的机器模型去拟合残差。第二阶段时,GRF 算法引入了得分函数 Ψ(Oi)、目标函数 θ(x)和辅助函数 v(x),其中得分函数的计算公式为:

图片

很容易看出,得分函数 Ψ(Oi)其实就是残差,由公式 Y = θ(x)T + v(x)得到的。算法寻求满足局部估计等式的 θ(x):对于所有 x,满足:

图片

其实本质上也是学习 θ(x),使得实验组和对照组数据的预估结果与真实值之差最小。

三、评估方式

目前因果模型常见的评估方式有两种:uplift bins 及 uplift curve

3.1 Uplift bins

将训练好的模型分别预测实验组和对照组的测试集数据,可以分别得到两组人群的 uplift score。按照 uplift score 的降序进行排列,分别截取 top10%、top20% .... top100%的用户,计算每一分位下两组人群分值的差异,这个差异可以近似认为是该分位下对应人群的真实 uplift 值。uplift bins 的缺陷在于,只能做一个定性的分析,无法比较不同模型效果好坏。

图片

3.2 Qini curve

在 uplift bins 的基础上,我们可以绘制一条曲线,用类似于 AUC 的方式来评价模型的表现,这条曲线称为 uplift curve;我们将数据组的数据不断细分,精确到样本维度时,每次计算截止前 t 个样本的增量时,得到对应的 uplift curve。

计算公式为:

图片

其中 Y_t^T 代表前 t 个样本增量时,实验组样本转化量,N_t^T 代表实验组的累计到 t 时,实验组样本总量,对照组同理。

图片

如上图,蓝线代表的 uplift curve,实黑线代表 random 的效果,两者之间的面积作为模型的评价指标,其面积越大越好,表示模型的效果比随机选择的结果好的更多。与 AUC 类似,这个指标我们称为 AUUC(Area Under Uplift Curve)。

四、业务应用

4.1 样本准备

因果建模对于样本的要求比较高,需要样本服从 CIA(conditional independence assumption)条件独立假设,即样本特征 X 与 T 相互独立。因此在进行因果建模前,需要进行随机实验进行样本收集,通常是通过 A/B 的方式将用户随机的分配至不同的 treatment 中,观测用户在不同 treatment 下的表现。

4.2 样本构造

样本构造与常规机器学习的样本构造步骤基本一致,但是需要特别关注以下方面:

特征关联:用户特征 X 必须严格使用进入随机实验组前的特征,例如:用户 T 日进入实验组,那么用户的特征必须使用 T-1 日及以前的特征。这样做的原因是用户进入 treatment 后,部分特征可能已经受到 treatment 的影响发生了改变,使用受影响后的特征进行模型训练有几率造成信息泄露,对模型的效果造成比较大的影响甚至起反向的作用。

目标选择:在某些场景中,treatment 的影响需要一段时间才能够产生作用,例如道具数量的调整对用户留存的影响可能需要过一段时间才能体现。因此在选择目标时,可以选择更长周期的目标,例如相比于次日留存,选择 7 日留存或 14 日留存会更优。不过也不是越长周期越好,因为越长周期的目标有可能导致模型的学习成本增加从而效果下降,这种情形在小样本的场景更为突出。选择一个合适的目标能够很大程度上提升模型的线上表现。

4.3 模型训练

在我们的场景中,用户每次完成任务发放的道具数量为 treatment,用户留存以及用户活跃时长变化为我们关注的 uplift。实验过程中,我们先后对比了 s-learner、t-learner 以及 dml 的效果,三种模型选择的 base-learner 都为 lightgbm。

在实验的过程中,我们发现,当使用 s-learner 对活跃时长进行建模时,无论如何调试模型,得到的 treatment effect 都为 0,即用户在不同 treatment 下的活跃时长预测结果相同。但是当我们将模型换成 t-learner 或 dml 时,treatment effect 数据恢复正常。输出 s-learner 的特征重要度,我们发现 treatment 特征的重要度为 0。我们对用户在不同 treatment 下活跃数据进行分析,发现不同组的活跃数据弹性很小,即用户在不同 treatment 下的活跃改变很小。

图片

而 s-learner 对于这种微弱的改动敏感度很低,因此效果不佳。而 t-learner 在进行训练时,会针对每个 treatment 都训练一个模型,相当于显性的将 treatment 的特征重要度加大,而 dml 在训练过程中主要关注训练的残差,因此这两类模型的效果都要好于 s-learner。 这也反映了 s-learner 在数据弹性不足时的效果缺陷,因此在后续的训练中,我们放弃了 s-learner,主要关注在 t-learner 以及 dml 上。

后续在不同指标的离线评估上, dml 模型的效果都要显著优于 t-learner。这也与理论相互印证:t-learner 由于引入中间变量,中间变量的误差使得对于最终 uplift 的预估有偏,而 dml 通过拟合残差,最终实现了无偏估计。

图片

\

4.4 人群分配

根据训练效果,我们选择 dml 作为最终的预估模型,并得到了用户在不同 treatment 下的 uplift 值。我们会根据用户在不同 treatment 下的 uplift 值,对用户做人群分配。分配方案基于实际情况主要分为两种:有无约束条件下的人群分配及有约束条件下的人群分配。

  • 无约束条件下的人群分配:只关心优化指标,不关心其他指标的变化。那么我们可以基于贪心的思想,选择每个用户 uplift 值最高的策略进行人群分配。
  • 有约束条件下的人群分配:关注优化指标的同时,对于其他指标的变化也有一定的约束。我们可以通过约束求解的方式对该类问题进行求解。

在我们的业务场景下,我们同时对用户留存、活跃时长、流水等目标都有限制,因此进行了有约束条件下的人群分配方案。

4.5 实验效果

基于训练好的 dml 模型及约束分配后的结果,我们开启了线上 A/B 实验。在经过多周的测试后,相较于基准策略,我们的策略在流水、活跃等指标不降的情况,取得了置信的 10%+留存收益。目前我们基于因果模型的策略已经全量上线。

五、总结及后续展望

因果模型目前在互联网各大场景都得到了实践及应用,并取得了不错的收益。随着营销活动越来越多,营销手段越来越复杂,treatment 的维度也由常见的多 treatment 逐渐变为连续 treatment,这对于样本、模型学习能力等方面的要求也越来越严格。在后续工作开展,可以考虑从多目标建模、场景联动、无偏估计、强化学习等方面继续进行优化,为各个业务场景产生更大价值。

相关 [因果 游戏 个性] 推荐:

因果推断在游戏个性化数值中的实践及应用

- - 掘金后端本月最热
在游戏场景内,通常有着各种各样的玩法数值设计. 由于不同用户在偏好、游戏经验等方面存在差异,因此同一数值并不适用于所有用户. 例如一个闯关游戏,对于新手来说,设置关卡的难度系数可以比有丰富经验的老玩家低一些. 为了让用户能够有更好的游戏体验,我们可以基于算法对用户进行个性化的数值调控,从而提升用户在游戏内的时长、留存等.

游戏指南

- Blacat - 韩寒
这是一个复杂的国度,人们并不是那么渴望文人范畴里的自由,如果你上街问问,大家都觉得自己过的挺自由. 人们已经习惯了在台上台下的两种话语,你只要不冲进他......>>点击查看新浪博客原文.

游戏开发商开源HTML5游戏

- - Solidot
游戏工作室Wooga开源了其开发的HTML5游戏Pocket Island,源代码托管在GitHub上,该公司在官方博客上介绍了他们的开发经验,认为HTML5游戏有潜力,但尚未做好准备,开源的意图将是让其他人了解他们的工作,学习和改进. Wooga认为,2012年也许不是HTML5的黄金时代,但它的黄金时代即将到来.

JS游戏引擎

- 米随随 - HTML5研究小组
If you don’t have anything better to do and want to help fellow redditors interested in JS game dev out, feel free to fork the list and modify it as you like.

Google+加入游戏

- Thomas - Solidot
Google宣布了Games in Google+,为旗下社交网站引入了游戏功能,Google+正从类似Twitter的信息交流平台变得更像是其竞争对手Facebook. 游戏暂时还没有对所有用户开放,但Google承诺会在不久以后让每一位Google+用户都能玩上游戏. 目前提供的游戏包括了愤怒的小鸟,数独,Bejeweled Blitz等.

我的iPad游戏

- Aim - Aether
说是以办公和看书为主,实际上从使用时间来看也是这样,但是不知不觉还是买了一屏的游戏(整个桌面也才三屏而已),这还不包括随时删掉的无数没啥意思的游戏. 晒一下清单,有兴趣的同学可以拿去. 支持多人对战基本都属于必买的游戏. 和iPhone、Touch,以及电脑上的多人联机游戏不一样的是,iPad的大屏幕和多点触摸允许多达四个人在一个iPad上面对面的游戏,这种体验和任何网络游戏只能面对冰冷屏幕的感觉是完全不一样的.

体感游戏合家欢

- Duo - 南都周刊-热点新闻
就像当初满腔豪情买下后最终被落满尘的跑步机健身器材一样,Wii在很多人家里也陆续步入 “偶尔想起来玩儿一下”“现在基本没碰”的阶段. 美国艺电(EA)总裁John Riccitiello认为未来体感游戏的发展应该建立在一个“更加细分的市场”上. 打打Wii还能稍微让身体动一下. 任晓米,24岁,游戏年龄:4年.

spy++和游戏修改器

- 大宝PKU - C++博客-首页原创精华区
这几天做了两个东西,spy++ 和游戏修改器. spy++ 就是模仿 vs的那个工具spy++. 游戏修改器,就是暴力搜索内存,找到我们关心的数据,然后进行更改. 总之这些东西做过之后感觉就是都不难,但是在做的时候多少会感觉点吃力. 闲下来无事,记录下它们的过程吧. spy++ 分析(用vs2005做的——).

与月亮一起游戏

- mechelle.04 - 碌碡画报

JS游戏引擎列表

- sku - 酷壳 - CoolShell.cn
这里有一个网址收集了关于JS游戏引擎开发库的一个列表,转过来. 关于使用JS和HTML5做的一些小游戏,可参见《HTML5 小游戏展示》. Name Latest Release License Type Notes The Render Engine 1.5.3 MIT 跨浏览器; 大规模 API; 开源. 2 gameQuery 0.5.1 CC BY-SA 2.5 和 jQuery 一起使用 gTile 0.0.1 Tile based.