闲聊因果效应(4):离线评估

  这里是闲聊因果效应系列文章, 基本概念介绍参见第一篇,本文不再赘述

  BR的纸飞机:闲聊因果效应(1):当我们聊因果时,我们在聊什么更多内容可以关注微信公众号:BR的纸飞机

  当我们训练完一个模型后,自然要进行离线评估,尤其是在互联网领域做 Uplift Modeling 时,准确评估uplift预测结果尤为重要。可惜,在因果推断领域,由于要预测的目标是无法观测的(即无法采集到 label 信息),因此无法使用类似 AUC,F1 score 之类的指标。

  根据不同的场景,本文聊聊几种常用的评估方法。

  对于模拟数据集,比如 IHDP[1],有真实的因果效应group truth信息,显然,这种情况下做离线评估是容易的。

  \epsilon_{MAE\_ATE} = \frac{1}{n}

  \tau_i 是真实的treatment effect 信息, \hat{\tau_i} 是模型的预测值,下文沿用这两个符号。 \epsilon_{MAE\_ATE} 则从整体角度评估模型预测是否靠谱,越小越好。

  \epsilon_{P E H E}=\frac{1}{n} \sum_{i=1}^{n}( \tau_i-\hat{\tau_i})^2 \tag{2}

  PEHE 全称 precision in estimation of heterogeneous effect, \epsilon_{PEHE} 从个体角度评估模型预测是否靠谱,越小越好。

  在大多数时候,我们拿到的数据集是无group truth的,即\tau_i 是不知道的,这时候模型的离线评估会困难许多。当测试集是随机数据集(满足RCT条件,即treament是随机分配的)时,有以下几种常用方法进行离线评估。

  注意,这些方法都需要随机数据集。

  计算ATT(Average Treatment Effect of the Treated) 和 ATT 的MAE

  \begin{align} ATT & =\frac{1}{

  其中 T 表示 Treatment 组的样本,即 { t=1 } ; C 表示 Control组样本,即{ t=0 }

  由于测试集时随机的,所以 我们可以计算出ATT,然后根据 ITE estimator计算的预估结果, \epsilon_{A T T}\epsilon_{A T T} 越小越好,越小表示 ITE estimator的ATT预估得越准。

  假如用 ITE estimator (也叫 uplift model)做treatment决策,比如制定一个决策规则 \pi_f , 当 f (x, t=1) -f (x, t=0) > λ ,当T=1相比T=0 的 提升大于超参数 \lambda 时, \pi_f(x)=1 ,表示应该要给treatment。否则 \pi_f(x)=0 ,表示不应该给treatment。

  Policy risk 则是说明 ITE estimator 用规则 \pi_f 做决策时的平均loss,定义如下:

  \begin{array}{r} {  Policy \ Risk}=1-\{\mathbb{E}[y^1 \mid t=1, \pi_f=1] p(\pi_f=1)  +\mathbb{E}[y^0 \mid t=0, \pi_f=0] p(\pi_f=0)\} \end{array} \tag{4} 解读起来就是,假如基于这个ITE estimator做treatment 决策出应该要给treatment(即 \pi_f=1 )那么就从随机数据集(满足RCT条件)里找到treatment恰好也为1(即 t=1)的样本,计算期Y的期望 \mathbb{E}[y^1 \mid t=1, \pi_f=1] 。当 \pi_f=0 时,同理计算得到 \mathbb{E}[y^0 \mid t=0, \pi_f=0] 。最后,通过 p(\pi_f=0),\ p(\pi_f=1) 加权,得到Policy risk。

  Policy risk 越小越好。越小说明基于 ITE estimator 做treatment决策的收益越大。关于超参数 \lambda ,其实是起到一个ROI考核的作用,只有当treatment的收益大于 \lambda 时才给treatment。

  到这里可能还有点抽象,我们来通过 TARNet/CFR论文[3] 中的例子来具象体会一下。该论文用了Job[1]数据集做实验,任务是预测某个 就业培训政策(treatment) 对就业率的影响,标签 Y 表示是否就业。此时Policy risk就是失业率, 如果计算出来的 Policy risk越低,表示基于 ITE estimator 做的决策效果越好(就业率越好)。就业培训是要成本的,在资源有限的情况下,决策者会考虑只给那些经过培训能带来足够提升(大于 \lambda )的人提供培训支持。 当 \lambda=0 时,表示只要一个人培训是正收益的,就应该给资源支持这个人培训。

  AUUC(Area Under Uplift Curve)和Qini coefficient 类似大家熟知的AUC(Area under ROC curve),两者在计算口径上有一点区别,它们都是保序的度量。

  AUUC就是Uplift Curve下的面积,Qini coefficient 就是 Qini Curve下的面积,面积越大越好。

  我们分别来介绍下 Uplift Curve、Qini Curve是怎么做的。

  f(k)=(\frac{Y_k^T}{N_k^T}-\frac{Y_k^C}{N_k^C})(N_k^T+N_k^C) \tag{5}

  step 1: 模型对随机测试集进行预测,然后把样本按预估的 ITE (或者叫uplift value) 降序排序step 2: 取ITE top k个样本 统计得到 f(k) 。以k 为横轴, f(k) 为纵轴,画出Uplift Curve。其中, Y_k^{T} 表示在 top k个样本中, treatment组的Y label的和(即有多少个样本Y=1), Y_k^{C} 同理; N_k^{T} 表示在 top k个样本中, treatment组总共有多少个样本, N_k^C 同理。

  所以, f(k) 的含义就是,在 top k个样本中,如果都进行干预(有treatment),会相比不做干预(无treatment)会获得多少提升。

  uplift curve 长这样。图片来自 scikit-uplift

  当 treatment 组和 control 组的 样本数量(在topK样本里)相差比较大的时候,Uplift Curve的计算可能会存在一些问题。为此 Radcliffe 提出 Qini curve[4] ,把提升缩放treatment组的样本规模上。

  g(k)=Y_t^T-\frac{Y_k^C N_k^T}{N_k ^C} \tag{6}

  做法与Uplift Curve类似,先按ITE 排序然后,取 ITE top k个样本 统计得到 g(k) 。以k 为横轴, g(k) 为纵轴,画出 Qini Curve。

  Qini Curve 长这样。图片来自 scikit-uplift 不难发现, Qini Curve 与Uplift Curve的关系如下:

  f(k)=\frac{g(k)(N_k^T+N_k^C)}{N_k^T}   \tag{7}

  我看了大多数文献资料,都提到说Qini Curve在实际情况中通常会比Uplift Curve更好,我觉得主要是因为Qini Curve可以处理treatment 组和contorl 组样本数量差异大的情况,具有稳定性,所以 Qini coefficient 会比AUUC 更实用一些。

  前面我们说到,AUUC就是Uplift Curve下的面积,Qini coefficient 就是 Qini Curve的面积。现在我们已经知道Uplift Curve和Qini Curve是怎么来的了,那面积计算就显而易见的了。关于面积计算,这里提两个我所知道的trick

  画一条 random的Curve(即 随机预估 ITE,随便打分),可以借此对比一下 ITE estimator 、随机打分的结果,如果 ITE estimator 的曲线下的面积比 random的大,则说明做得比随机好,否则比随机差。面积计算方面,用ITE estimator 曲线下的面积 减去 随机打分曲线下的面积,然后除以理论的面积上限做归一化,这样AUUC或Qini coefficient 就缩放到 [-1, 1] 的范围了。可以参考scikit-uplift的实现scikit-uplift :

  https://github.com/maks-sh/scikit-uplift/blob/master/notebooks/uplift_metrics_tutorial.ipynb

  scikit-uplift/uplift_metrics_tutorial_advanced.ipynb at master · maks-sh/scikit-uplift

  参考论文《Evaluation Methods and Measures for Causal Learning Algorithms》

  一杯铁观音喝完了,喜欢的记得点赞关注哦~

  记得在2022年11月 国内的一个因果推断线上峰会中,有人问清华大学的崔鹏教授:做因果推断最难的是什么。 崔鹏教授说:最难的是评估,因为这是很上帝视角的东西。

  我听后深有感触。在实际问题中,因果推断预估的目标本来就是不可观测的,我们只能通过一些间接的手段来间接的评估,稍有不慎可能就无法得到线上线下结论的评估效果。站在上帝视角进行评估,必须时刻保持敬畏之心。

  本文仅针对binary treatment 的情况进行探讨,对于多值(multiple)、连续值(continue dose)的treatment我们以后再聊。