关于算法:因果推断在哈啰出行的实践探索

4次阅读

共计 6419 个字符,预计需要花费 17 分钟才能阅读完成。

导读:因果推断在智能营销场景有着宽泛的利用。在哈啰出行酒店营销业务中,自研 Tree-based 因果推断模型通过批改决裂准则,使得模型指标和业务指标的一致性更高,在智能补贴模块中获得了较好的成果。

本文的次要内容包含:

背景介绍,简略介绍智能补贴及其中的一些问题;

因果推断的利用,次要是 Uplift 建模,即增量预估;

因果推断在哈啰智能补贴场景的利用,包含一些翻新;

问题的思考和将来的布局。

背景介绍

天降红包场景

哈啰出行的根本业务是两轮共享出行业务,包含单车和助力车。同时,也有针对用户需要而推出的服务和产品,例如酒店业务。

以酒店业务促销为例,这一业务的指标是使总效用最大化。想要进步总效用,通常会给用户以发优惠券的模式做补贴,从而促使用户转化。

智能补贴

从用户层面进行下钻剖析。左图依照经典的营销人群四象限,从“是否发券”和“是否购买”两个维度,将用户分为了四类人群。其中:

  • 营销敏感人群指对价格比拟敏感,没有优惠就不会购买、有优惠才会购买的人群;
  • 天然转化人群是指无论是否有优惠都会购买的人群;
  • 金石为开人群是指无论是否有优惠都不会购买的人群;
  • 副作用人群是指没有优惠活动触达时会购买,但有优惠活动触达时反而不会购买,对营销流动比拟恶感的人群。

咱们进行补贴的目标通过发放优惠券,促使原本不会购买的用户产生转化,从而进步总效用,咱们要做的就是进步补贴效率。显然,咱们的指标人群是四象限中的营销敏感人群。

用户对价格的接受程度是不一样的,并且在用户量宏大的状况下,是不可能给所有用户都发放优惠券的。

以往是按照经营的教训,依据用户的需要来制订发放策略。起初有了算法的染指,应用机器学习算法来预估用户的购买概率。最后应用的是 CTR 预估模型,也就是 Response 模型的相关性模型,尽管模型策略绝对经营策略而言有肯定的晋升,但也存在一些问题。

从具体 case 来看,左表中假如当初有两个用户。通过 Response 模型的预估,咱们失去了在发券状况下两个用户的购买概率,同时咱们也晓得他们在不发券状况下的购买概率。能够看到,发券之后两个用户的购买概率都是晋升的,并且用户 2 的购买概率(1.5%)要高于用户 1 的购买概率(1.3%)。如果依照这种后果,咱们是否能够决策应该给用户 2 发放优惠券?

后面咱们也提到过,咱们的指标是晋升补贴效用,所以须要再从效率的角度再来计算一下。右图中,假如用户 1 和用户 2 各有一万人,商品的原价是 10 元,优惠券的金额是 2 元,那么如何发券会使效率最大化呢?咱们能够计算一下效率的冀望。以总人数乘以购买概率,再乘以价格,就能够失去如下的效率状况:

  • 都不发券时,总效用是 2200;
  • 都发券时,总效用是 2240;
  • 用户 1 不发券,用户 2 发券时,总效用是 2000;
  • 用户 1 发券,用户 2 不发券时,总效用是 2400。

若依照前述 Response 模型预估的后果进行发券,即用户 1 不发券,而用户 2 发券,总效用只有 2000,反而比都不发券时更低。这里是为了不便大家了解与后果相悖的发券策略举了一个极其的例子,能够看出用 Response 模型的后果取得的补贴效用并不是最大的。

咱们再来看一下用户 1 和用户 2 在发券后的购买概率变动的差值,也就是新增的这一列 Uplift 的值。能够看到发券后用户 1 的购买概率晋升了 0.5%,用户 2 的购买概率晋升了 0.1%,能够看登程券对用户的影响成果大小是不一样的。它能够预测用户的购买概率,然而它无奈通知咱们用户是否因为发放优惠券而产生购买,也就无奈辨认出营销敏感人群。

表格中显示了 Response 模型和因果推断的关系。从发券到购买是有因果关系的,此时就要用到因果推断技术。

相关性模型是基于观测后果失去的,比方观测到了什么、购买概率是怎么的,次要用利用在搜寻广告举荐等场景。然而补贴场景中的发券动作,能够看作是对用户的一次干涉行为,有无奈观测到的异样,咱们称之为反事实。也就是说在有干涉存在的状况下,绝对于没干涉的状况下,它是什么状况?比如说如果我过后没有给用户发券,它的后果会是怎么?这是因果推断所钻研的问题。

在营销畛域的利用次要是增量预估,也就是咱们所说的 Uplift 建模,能够通过增量的大小来辨认出营销敏感人群。

因果推断

接下来咱们看一下 Uplift 建模,这部分次要会讲一些罕用的建模办法,还包含一些离线评估的办法。

通过后面局部的介绍咱们曾经晓得相关性和因果性是不一样的,咱们这里再举一个例子。在数据统计网站中有很多乏味的相关性的统计,其中有一个是尼古拉斯凯奇参演电影数量和当年度泳池溺水身亡人数的相关性统计,这两条曲线的重合度十分高,是不是能够得出结论——因为尼古拉斯凯奇演电影导致人溺水呢?显然不是。还有很多这样的例子,次要为了阐明相关性和因果性并不一样的问题。

因果推断

回到正题,Response 模型和 Uplift 模型次要的区别能够用这两个公式来形容。Response 模型次要是预估用户的购买概率,Uplift 模型次要预估因为某种干涉后用户购买的概率。因果推断技术在营销场景的次要利用,就是基于 Uplift 建模来预测营销干涉带来的增益。

因果效应

那么 Uplift 模型是如何做到增量预估的呢?咱们在这里介绍因果效应的概念。假如有 n 个用户,Yi1 示意对用户 i 进行干涉的后果,Yi0 示意对用户 i 无干涉的后果,那么用户 i 的因果效应就能够示意为 Yi1 减 Yi0。在咱们的场景中,Y1 和 Y0 就别离代表了发券和不发券。然而要留神的是存在反事实的问题,因为对同一个用户,咱们不可能既失去他发券的后果,又失去他不发券的后果。前面咱们会讲到反事实问题目前的解决思路,Uplift 建模的指标因果效应,也即利用场景中发券带来的增量收益。

Uplift 建模办法

接下来介绍 Uplift 建模的罕用办法。这里建模用到的数据都是蕴含有干涉的数据和无干涉的数据的。

T-Learner,其中 T 代表 two 的意思,也即用两个模型。它的次要思维是对干涉数据和无干涉数据别离进行建模,预估时数据进入两个模型,用两个模型的预测后果做差值,来失去预估的增量。该办法的长处是原理比较简单直观,能够疾速实现。但毛病是,因为两个模型的精度不肯定十分高,所以两个模型的误差会有叠加,并且因为有差分的操作,这是间接计算的增量。

S-Learner,其中 S 代表 single,也即用一个模型。它的次要思维是把干涉作为特色输出模型,在预测时,同样是用有干涉的后果和无干涉的后果做差,失去预估增量。和 Response 模型比拟像,就相当于特色外面有“是否干涉”这样的特色,它的长处是,相比 T -Learner 缩小了误差的累积,但毛病同样是间接的计算增量。

X-Learner,它的思维是先别离对有干涉、无干涉数据进行建模,再用两个模型来穿插预测,失去干涉数据和无干涉数据别离的反事实后果。因为这是训练数据,它是有实在 label 的,再用实在 label 和方才预测的反事实后果做差,失去增量;把增量再作为 label,再针对增量进行建模。同时对有无干涉进行建模,失去干涉的偏向分,并在预测增量的时候引入偏向分权重。办法的长处在于,能够对后面咱们预测进去的增量建模时退出先验常识进行优化,来进步预测的准确性,另外还引入了偏向分权重来缩小预测的误差。但它的毛病也是多模型的误差,可能会有累积,并且归根结底也是间接失去预测增量。

下面这几种办法都是间接失去预测增量,当然,也有间接对增量进行建模的办法,比方基于决策树的模型 Tree-based Model。近几年也有一些深度学习的办法,比方 DragonNet。工夫关系,这里不具体介绍。

评估办法

那么 Uplift 模型应该如何评估呢?这里咱们能够看到,因为有反事实问题的存在,咱们是没有实在的增量标签的,传统算法的评估办法,如 AUC、准确率、RMSE 等都是依赖实在标签的评估办法,在该场景中无奈应用。Uplift 模型的离线评估应用的指标是 AUUC,它的含意是 Uplift 曲线下的面积。能够看一下右上角图中蓝色 Uplift 的曲线,AUUC 的指标对曲线做积分,求它曲线下的面积。问题又来了,Uplift 曲线是如何失去的呢?咱们能够看一下公式。这里我还列了一下 AUUC 的计算流程,帮忙大家了解。

第一步,测试集进入模型,输入 Uplift Score;

第二步,所有测试样本依据 Uplift Score 做降序排序;

第三步,进行分桶,每个桶的序号记为 t;

第四步,计算每个 t 的累计增益。其中,Y 示意分组的正例的数量,T 代表是有干涉,C 代表无干涉,YT 示意有干涉组的正例的数量,再除以 NT 有干涉组总的样本数量。假如 label 是“是否转化”,咱们就能够看到 YT 除以 NT 是干涉组的转化率。同样,YC 除以 NC 是无干涉组的转化率。能够看到公式右边是干涉组绝对无干涉组的转化率的增量,左边是样本的总数量,公式计算了收益,也即干涉组绝对无干涉组晋升了多少转化。

第五步,求积分,计算曲线下的面积。

Uplift Score 越准,第一步对样本的排序越准,排序越靠前的桶实验组和对照组的指标的差值会越大。这体现为曲线的拱形。所以 AUUC 绝对越高,就阐明相对而言模型越好。

因果推断在哈啰的利用

接下来介绍一下因果推断在哈啰是如何利用的,次要是 Tree-based 模型。这部分会具体解说 Tree-based 模型和一些翻新利用。还有离线和线上的成果的展现。

红包补贴

这部分利用次要是在酒店营销场景中的红包补贴模块,属于整个算法链路中的一环。后面曾经提到过,咱们的指标是使补贴效用最大化。次要看的指标是人均效用,即总效用除以人群的人数。

咱们的模型是基于 Tree-based 的 Uplift 模型做了一些改良。

Tree-based Model

咱们把基于决策树的 Uplift 模型和一般分类决策树放在一起做个比拟,这样不便了解。

二者次要不同在决裂的准则和指标。一般的决策树的决裂准则是信息增益,这样使得叶子节点的信息熵起码、类别的不确定性最小,以达到分类的目标;而基于决策树的 Uplift 模型的分类准则是散布散度,比方罕用的有 kl 散度、卡方散度,这样能够使叶子节点中干涉组和无干涉组的散布差别最大,来达到晋升增益的目标。

从左边的示意图能够看出基于决策树的 Uplift 的模型是如何做到辨别营销敏感人群的,每个叶子节点的图标示意的是叶子节点中占绝大多数的人群。这样咱们就能够比拟容易地区分出营销敏感人群。

那么咱们为什么要抉择基于决策树的模型呢?次要有两点思考:

① 树模型解释性比拟强,这点对业务的利用比拟有帮忙。

② 间接对增量建模的准确性更高,对业务的晋升是咱们最关怀的事件。

接下来看一下咱们是如何改良基于树的 Uplift 模型的,从而实现以增量收益最大化为指标的 Treelift 模型。方才曾经提到,树模型最重要的点是决裂准则和指标的一致性。咱们能够通过批改决裂准则,来使得模型的指标和业务指标一致性更高。

目前业界支流的用法还是在用户转化上,也就是说样本的 label 为 0 或者 1,因而就能够应用 kl 散度作为节点的决裂准则。而咱们的指标是人均效用,用 kl 散度并不太适合,因为 kl 散度是掂量概率分布的,因而咱们改良了决裂准则来匹配业务指标。

以增量效用为指标的 TreeCausal

这里咱们是以效用作为样本的 label,那么以干涉组和无干涉组的人均效用的差值的平方作为节点的决裂准则,这里的指标是最大化人均效用差值的平方。

算法流程:

第一步,假如决裂前的数据集为 theta,那么计算决裂前发券组和无券组样本人均效用的差别。这里咱们效用的差别是这样定义的。G 是每一个用户的 label。咱们对有干涉组的每个人的效用做求和,再除以干涉组的样本数,失去人均效用,再减去无干涉组。这个差值做平方,这样能够计算出决裂前的效用差别。

第二步,依据某个特色 f 将数据集 theta 分成左右两个子集 theta1 和 theta2,计算决裂后的人均效用差别,能够看一下左边的示意图。如果特色的值等于 f,就能够分到左子集,如果不等于 f,能够失去右子集。接着对每一个子集都计算人均效用的差别,再依据每一个子集的样本比例作为权重,加权求和,最终失去计算差别。

第三步,计算增益。决裂后的人均效用差别减去决裂前的人均效用差别,失去增益。

第四步,遍历数据集 theta 中所有的特征值,反复进行第二步、第三步,咱们会失去很多对应不同特征值的增益。咱们取增益最大时对应的特征值,作为节点的决裂值,将数据集分为左子集和右子集。

第五步,递归调用,对左子集和右子集再反复上述步骤,生成 Treelift 模型。

随机试验

接下来是对于训练数据的。

后面咱们提到过,因为反事实的存在,咱们无奈同时观测到同一用户发券和不发券的后果。那么如何让模型学习到发券带来的增益呢?如果说咱们站在人群的角度上来思考群体增益,那么只有保障是否发券与用户的特色互相独立,就能够剖析发券的群体绝对不发券的群体带来的增益。

这里很容易就能够想到,能够通过随机试验来取得满足需要的数据,但随机试验的老本比拟高。当然也还有一些其余的解决办法,比如说倾向性得分的匹配,这也是目前钻研比拟多的点。然而依据需要思考到,咱们须要验证因果推断办法的业务成果,最终还是抉择了小流量随机试验来获取符合要求的数据。如右图所示,咱们通过分流平台做了两次分流,第一次分流是切除随机试验用的小流量,第二次分流则是随机将用户分到实验组(发券组)和对照组(不发券组)。

实时决策

接下来是红包补贴模块的外围局部,分为离线和线上两局部。

线上局部,仍然是通过流量调配时申请进入算法组、经营组或者是随机补贴组。其中:

经营组是人工策略;

随机补贴组是后面提到的小流量随机试验,从小流量随机试验失去的训练数据用来建模,能够失去 Treelift 模型,进行一键评估,最初部署到线上;

算法组的流量由模型来决策发券。

模型的离线评估局部测试了不同的模型,最初失去的后果是咱们通过改良后的 Treelift 模型的 AUUC 是最优的。能够看一下右上角不同模型之间的比照,咱们比照了 T -model、S-model,还有 Treelift 模型,以及咱们在正则方面的一些尝试的模型比照。从线上成果来看,Treelift 模型相比人工策略有 4.7% 的晋升,绝对于咱们之前用过的 Response 模型也有 2.3% 的晋升。从后果来看,劣势是非常明显的,Uplift 模型在智能补贴场景的利用前景还是比拟广大的。

以上是因果推断技术在哈啰利用案例的介绍,心愿能给大家一些启发。

将来布局

最初是我在利用过程中遇到的一些问题和思考,以及将来的布局。

首先是训练数据的问题。后面咱们也提到了,是通过小流量随机试验来失去训练数据的,然而这种办法的老本的确很高。如何充分利用观测数据是一个难题,咱们也会去尝试业界的先进经验,比如说倾向性得分匹配法等。

另外是树模型自身的问题,训练速度偏慢。另外像剪枝、正则目前咱们还没有特地的优化。这部分将来是也是能够深入研究的。目前曾经有了一些深度学习的办法,也是后续尝试的方向。

业务方面,因为咱们是将补贴金额算到了样本的 label 中,从而简化了老本问题。但实际上很多场景中老本是须要独自思考的,因而券金额的调配也将是问题。这里能够通过整数布局来求解全局最优,咱们将来能够也会在其余的场景上进行一些尝试。

发问环节

问题:为什么 AUUC 能反映反事实转化成果?

咱们能够看一下 Uplift 曲线是怎么计算的。首先它的变量是 t,t 是依据 Uplift Score 降序排序之后,进行分桶失去的。以图为例,0.2 就代表 20%,依据排序之后,咱们取前 20% 的数据,取出来这样的数据,来计算前面的公式。右边因子这部分 YT 除以 NT 这一部分是代表的是实验组 (发券组) 的转化率,YC 除以 NC 代表的是对照组 (不发券组) 的转化率,差值是发券绝对不发券带来的转化率的晋升的幅度差值,再乘上总的样本数量,就比较清楚了。假如所有人都发券,和所有人都不发券相比,额定晋升的幅度就是对于增量的预估。

正文完
 0