AB实验人群定向HTE模型4 – Double Machine Learning[通俗易懂]

AB实验人群定向HTE模型4 – Double Machine Learning[通俗易懂]HTE旨在量化实验对不同人群的不同影响,进而通过人群定向进行差异化干预。Double Machine Learning把Treatment作为特征,通过估计特征对Y的影响来计算实验的差异效果。

Hetergeneous Treatment Effect旨在量化实验对不同人群的差异影响,进而通过人群定向/数值策略的方式进行差异化实验,或者对实验进行调整。Double Machine Learning把Treatment作为特征,通过估计特征对目标的影响来计算实验的差异效果。

Machine Learning擅长给出精准的预测,而经济学更注重特征对目标影响的无偏估计。DML把经济学的方法和机器学习相结合,在经济学框架下用任意的ML模型给出特征对目标影响的无偏估计

HTE其他方法流派详见 因果推理的春天-实用HTE论文GitHub收藏

核心论文

V. Chernozhukov, D. Chetverikov, M. Demirer, E. Duflo, C. Hansen, and a. W. Newey. Double Machine Learning for Treatment and Causal Parameters. ArXiv e-prints 文章链接

背景

HTE问题可以用以下的notation进行简单的抽象

  • Y是实验影响的核心指标
  • T是treatment,通常是0/1变量,代表样本进入实验组还是对照组,对随机AB实验
    T X T \perp X
  • X是Confounder,可以简单理解为未被实验干预过的用户特征,通常是高维向量
  • DML最终估计的是
    θ ( x ) \theta(x)
    ,也就是实验对不同用户核心指标的不同影响

Y = θ ( x ) T + g ( X ) + ϵ , where  E ( ϵ T , X ) = 0 T = f ( X ) + η , where  E ( η X ) = 0 Y = \theta(x) T + g(X) + \epsilon , \text{where }E(\epsilon |T,X) = 0 \\ T = f(X) + \eta ,\text{where } E(\eta|X) = 0 \\

最直接的方法就是用X和T一起对Y建模,直接估计
θ ( x ) \theta(x)
。但这样估计出的
θ ( x ) \theta(x)
往往是有偏的,偏差部分来自于对样本的过拟合,部分来自于
g ( X ) ^ \hat{g(X)}
估计的偏差,假定
θ 0 \theta_0
是参数的真实值,则偏差如下


n ( θ ^ θ 0 ) = ( 1 n T i 2 ) 1 1 n T i U i + ( 1 n T i 2 ) 1 ( 1 n T i ( g ( x i ) g ( x i ) ^ ) ) \sqrt{n}(\hat{\theta}-\theta_0) = (\frac{1}{n}\sum{T_i^2})^{-1}\frac{1}{\sqrt{n}}\sum{T_iU_i} +(\frac{1}{n}\sum{T_i^2})^{-1}(\frac{1}{\sqrt{n}}\sum{T_i(g(x_i) -\hat{g(x_i)})})

DML模型

DML模型分为以下三个步骤

步骤一. 用任意ML模型拟合Y和T得到残差
Y ~ , T ~ \tilde{Y},\tilde{T}


Y ~ = Y l ( x ) ,  where  l ( x ) = E ( Y x ) T ~ = T m ( x ) ,  where  m ( x ) = E ( T x ) \tilde{Y} = Y – l(x) ,\text{ where } l(x) = E(Y|x)\\ \tilde{T}= T – m(x) ,\text{ where } m(x) = E(T|x)\\

步骤二. 对
Y ~ , T ~ \tilde{Y},\tilde{T}
用任意ML模型拟合
θ ^ \hat{\theta}


θ ( X ) \theta(X)
的拟合可以是参数模型也可以是非参数模型,参数模型可以直接拟合。而非参数模型因为只接受输入和输出所以需要再做如下变换,模型Target变为
Y ~ T ~ \frac{\tilde{Y}}{\tilde{T}}
, 样本权重为
T ~ 2 \tilde{T}^2


Y ~ = θ ( x ) T ~ + ϵ a r g m i n E [ ( Y ~ θ ( x ) T ~ ) 2 ] E [ ( Y ~ θ ( x ) T ~ ) 2 ] = E ( T ~ 2 ( Y ~ T ~ θ ( x ) ) 2 ) \tilde{Y} = \theta(x)\tilde{T} + \epsilon \\ argmin E[(\tilde{Y} – \theta(x) \cdot \tilde{T} )^2]\\ E[(\tilde{Y} – \theta(x) \cdot \tilde{T} )^2] = E(\tilde{T}^2(\frac{\tilde{Y}}{\tilde{T}} – \theta(x))^2)

步骤三. Cross-fitting

DML保证估计无偏很重要的一步就是Cross-fitting,用来降低overfitting带来的估计偏差。先把总样本分成两份:样本1,样本2。先用样本1估计残差,样本2估计
θ ^ 1 \hat{\theta}^1
,再用样本2估计残差,样本1估计
θ ^ 2 \hat{\theta}^2
,取平均得到最终的估计。当然也可以进一步使用K-Fold来增加估计的稳健性。


s a m p l e 1 , s a m p l e 2 = s a m p l e s p l i t θ = θ ^ 1 + θ ^ 2 sample_1, sample_2 = sample split \\ \theta = \hat{\theta}^1 + \hat{\theta}^2 \\

Jonas在他的博客里比较了不使用DML,使用DML但是不用Cross-fitting,以及使用Cross-fitting的估计效果如下

AB实验人群定向HTE模型4 - Double Machine Learning[通俗易懂]

从propensity的角度来理解

最近想到一个比下面GMM更加直观理解DML的角度跟大家分享下。为了更好理解,我们做一些简化假设。

假设样本在高维特征空间上依旧完全随机,那预测T的第一步会得到全部是0.5的概率预测, 实验组的
Y ~ \tilde{Y}
是0.5, 对照组是-0.5。

预测Y的第一步(假设用GBDT拟合),每个叶节点(k)会得到
0.5 ( μ c m p , k + μ e x p , k ) 0.5*(\mu_{cmp,k} + \mu_{exp,k})
的预测值。假设每个叶节点不再存在HTE,实验对叶节点内所有实验组样本都有相同效果,实验组样本的残差为
0.5 ( μ e x p , k μ c m p , k ) 0.5*(\mu_{exp,k} – \mu_{cmp,k} )
,而对照组为
0.5 ( μ c m p , k μ e x p , k ) 0.5 *(\mu_{cmp,k} – \mu_{exp,k})
,它们互为相反数。这样在用
T ~ \tilde{T}
来拟合
Y ~ \tilde{Y}
的时候负负为正,得到的就会是
μ e x p , k μ c m p , k \mu_{exp,k} – \mu_{cmp,k}

对随机AB实验T的预测往往会在0.5附近,但一般不会是0.5因为实验的样本终究是有限的,被高维特征一切割多少会有不均匀的情况。假定某个叶节点T的预测是0.6,实验组
T ~ \tilde{T}
=0.4,对照组
T ~ \tilde{T}
=-0.6。这也意味着在这个叶节点实验组样本占40%对照组占60%。保持节点无HTE的假设,Y的预测变为
0.6 μ e x p , k + 0.4 μ c m p , k 0.6\mu_{exp,k} +0.4 \mu_{cmp,k}
,实验组样本的残差为
0.4 ( μ e x p , k μ c m p , k ) 0.4*(\mu_{exp,k} – \mu_{cmp,k} )
,而对照组为
0.6 ( μ c m p , k μ e x p , k ) 0.6 *(\mu_{cmp,k} – \mu_{exp,k})
,这样公式7里面的
Y ~ T ~ \frac{\tilde{Y}}{\tilde{T}}
是不是就make sense了。至于sample weight的调整也和propensity的逻辑一致,越接近0.5意味这估计的HTE越近似真实HTE,越偏离0.5意味着样本估计偏差越高因此权重越低。

从GMM的角度来理解

Generalized Method of Moments广义矩估计 (GMM)在经济学领域用的更多,在论文里乍一看到moment condition琢磨半天也没想起来,索性在这里简单的回顾下GMM的内容。

啥是矩估计呢?可以简单理解是用样本的分布特征来估计总计分布,分布特征由
E ( ( x a ) K ) E((x-a)^K)
,样本的K阶矩来抽象,一阶矩就是均值,二阶原点矩就是方差。举几个例子吧~

例如,总体样本服从
N ( μ , σ 2 ) N(\mu, \sigma^2)
就有两个参数需要估计,那么就需要两个方程来解两个未知数,既一阶矩条件
x i μ = 0 \sum{x_i}-\mu=0
和二阶矩条件
x i 2 μ 2 σ 2 = 0 \sum{x_i^2} – \mu^2 – \sigma^2=0

再例如OLS,
Y = β X Y=\beta X
可以用最小二乘法来求解
a r g m i n ( Y β X ) 2 argmin (Y-\beta X)^2
,但同样可以用矩估计来求解
E ( X ( Y β X ) ) = 0 E(X(Y-\beta X))=0
。实则最小二乘只是GMM的一个特例。

那针对HTE问题,我们应该选择什么样的矩条件来估计
θ \theta
呢? 直接估计
θ \theta
的矩条件如下
E ( T ( Y T θ 0 g 0 ( x ) ^ ) ) = 0 E(T(Y-T\theta_0-\hat{g_0(x)}))=0
DML基于残差估计的矩条件如下
E ( [ ( Y E ( Y X ) ) ( T E ( T X ) ) θ 0 ] ( T E ( T X ) ) ) = 0 E([(Y-E(Y|X))-(T-E(T|X))\theta_0](T-E(T|X)))=0

作者指出DML的矩条件服从Neyman orthogonality条件,因此即便
g ( x ) g(x)
估计有偏,依旧可以得到无偏的
θ \theta
的估计。

想看更多因果推理AB实验相关paper的小伙伴看过来 Paper_CausalInference_abtest


参考材料&开源代码

  1. V. Chernozhukov, M. Goldman, V. Semenova, and M. Taddy. Orthogonal Machine Learning for Demand Estimation: High Dimensional Causal Inference in Dynamic Panels. ArXiv e-prints, December 2017.
  2. V. Chernozhukov, D. Nekipelov, V. Semenova, and V. Syrgkanis. Two-Stage Estimation with a High-Dimensional Second Stage. 2018.
  3. X. Nie and S. Wager. Quasi-Oracle Estimation of Heterogeneous Treatment Effects. arXiv preprint arXiv:1712.04912, 2017.
  4. Microsoft 因果推理开源代码 EconML
  5. Double Machine Learning 开源代码 MLInference
  6. www.linkedin.com/pulse/doubl…
  7. www.zhihu.com/question/41…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13622.html

(0)

相关推荐

  • 优雅高效的编程语言——Python

    优雅高效的编程语言——PythonPython的语法非常清晰和简单。Python的语法使用空格而不是花括号或关键字结束符号来定义代码块。这种方式不仅使代码易于阅读,还可以避免代码块缺少结束符号导致的错误。Python还具有直观的结构,变量和函数的名称易于理解和记忆。

    2024-01-12
    102
  • 高可用 | Xenon 实现 MySQL 高可用架构 常用操作篇[通俗易懂]

    高可用 | Xenon 实现 MySQL 高可用架构 常用操作篇[通俗易懂]原创:知数堂 上一篇文章,我们详细介绍了 Xenon 实现 MySQL 高可用架构的部署过程。接下来本篇将介绍 Xenon 的常用操作,帮助大家在完成环境搭建之后,能把 Xenon 熟练的用起来,以更

    2023-04-22
    152
  • 怎么利用ApiPost接口管理工具校验/测试接口返回结果是否符合预期?[亲测有效]

    怎么利用ApiPost接口管理工具校验/测试接口返回结果是否符合预期?[亲测有效]本文主要讲解接口管理工具ApiPost的预执行脚本和后执行脚本里,怎么校验/测试接口返回结果是否符合预期? ApiPost简介: ApiPost是一个支持团队协作,并可直接生成文档的API调试、管理…

    2023-03-08
    149
  • mysql 更新锁_数据库更新语句怎么写

    mysql 更新锁_数据库更新语句怎么写看如下一条sql语句: # table T (id int, name varchar(20)) delete from T where id = 10; MySQL在执行的过程中,是如何加锁呢? 在

    2022-12-21
    145
  • Python ord()函数: 将字符转换成对应的ASCII码值

    Python ord()函数: 将字符转换成对应的ASCII码值ASCII(American Standard Code for Information Interchange)码是一种将每个字符与对应数字相关联的字符编码标准,包括英文字母、数字以及常用标点符号等。ASCII码共计128个,对于每一个字符,都有一个唯一的对应ASCII码。

    2024-01-02
    117
  • MySQL高可用架构_高可用架构社区

    MySQL高可用架构_高可用架构社区一、MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)

    2022-12-26
    142
  • Python字符串转Byte

    Python字符串转Byte在Python中,字符串和Byte是不同的数据类型。字符串是一组字符序列,而Byte是一组二进制数据。Python中的字符串不支持直接转换为Byte,因此我们需要使用一些方法来完成这个操作。

    2024-07-17
    43
  • matlab遗传算法ga工具箱_matlab多目标遗传算法

    matlab遗传算法ga工具箱_matlab多目标遗传算法1 遗传算法概述 遗传算法(Genetic Algorithm,GA)是进化计算的一部分,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。该算法简单、通用,鲁棒性强,适于并行处理。2 遗传算法的特点和应用 遗传算法是一类可用于…

    2023-07-27
    119

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注