首页 > 其他分享 >Causal Inference理论学习篇-Tree Based-Causal Tree

Causal Inference理论学习篇-Tree Based-Causal Tree

时间:2024-04-14 18:33:36浏览次数:31  
标签:est Inference Tree mu small prod hat Causal left

Tree-Based Algorithms

Tree-based这类方法,和之前meta-learning 类的方法最明显的区别是: 这类方法把causal effect 的计算显示的加入了到了树模型节点分裂的标准中 从 response时代过渡到了effect时代。

大量的这类算法基本围绕着树节点分裂方式做文章,普遍采用的是兼容性比较高的[[万字长文讲述树模型的历史|cart树]]

Causal Tree & Honest Tree

causal tree[4] 这篇文章算是较早通过改变树模型node分裂方式来预估[[因果推断及其重要相关概念#heterogeneous causal effects|异质因果效应]](heterogeneous causal effects)的算法。
所以重点还是如何去构建 split criterion,前置可能要说一下相关的符号含义:
在特征空间 \(\mathbb X\) 下存在节点分裂方式的集合:

\[\prod(\ell_1,...,\ell_{\#(T)}) \]

其中以 \(\ell(x;\prod)\) 表示叶子节点\(\ell\) 属于划分方式 \(\prod\), 此时该划分方式下的,node的条件期望定义为:

\[\mu(x;\prod)=E[Y_i|X_i \in \ell(x;\prod)] \]

那么,自然如果给定样本\(S\) , 其对应节点无偏统计量为:

\[\hat \mu(x;S,\prod)=\frac{1}{\#(i\in S: X_i \in \ell(x;\prod))}\sum_{i\in S:X_i\in\ell_i(x;\prod)} Y_i \]

Causal Tree 学习的目标 or loss func

学习目标使用修改后的MSE, 在标准mse的基础上多减去了一项和模型参数估计无关的\(E[Y^2]\),此外
训练即build tree阶段,train set被切为两部分,一部分训练样本train set:\(S^{tr}\) , 一部分是估计样本 est set \(S^{est}\),还有测试样本test set \(S^{te}\)

这里有点绕:和经典的树模型不一样的是:叶子节点上存储的值不是根据train set来的, 而是划分好之后通过est set进行估计。(显然, 这种方式有点费样本...)。所以,这也是文中为啥把这种方法叫做“Honest”的原因。

假设已经根据训练样本得到划分方式,那么评估这种划分方式好坏被定义为:

\[MSE(S^{te}, S^{est},\prod)=\frac{1}{\#(S^{te})} \sum_{i\in S^{te}} \{(Y_i-\hat\mu(X_i;S^{est},\prod))^2-Y_i^2\} \]

整体求期望变成:

\[EMSE(\prod)=E_{S^{te},S^{est}}[MSE(S^{te}, S^{est},\prod)] \]

算法的整体目标为:

\[Q^{H}(\pi)=-E_{S^{est}, S^{est}, S^{tr}}[MSE(S^{te}, S^{est},\pi(S^{tr}))] \]

其中,\(\pi(S)\) 定义为:

\[\pi(\mathcal{S})= \begin{cases}\{\{L, R\}\} & \text { if } \bar{Y}_L-\bar{Y}_R \leq c \\ \{\{L\},\{R\}\} & \text { if } \bar{Y}_L-\bar{Y}_R>c .\end{cases} \]

其实就是比较节点在划分后,左右子节点的输出差异是否满足阈值c,\(\bar Y_L=\mu(L)\)

节点划分方式

作者直接给出了节点划分时的loss计算标准:

我们来推导一下:

\[\begin{aligned} EMSE(\small\prod)&=E_{S^{te},S^{est}}[\frac{1}{\#(S^{te})} \sum_{i\in S^{te}} \{(Y_i-\hat\mu(X_i;S^{est},\small\prod))^2-Y_i^2\}] \\ &=E_{S^{te},S^{est}}[(Y_i-\hat\mu(X_i;S^{est},\small\prod))^2-Y_i^2] \\ &=E_{S^{te},S^{est}}[(Y_i-\mu(X_i;\small\prod)+\mu(X_i;\small\prod)-\hat\mu(X_i;S^{est},\small\prod))^2 - Y_i^2] \\ &=E_{S^{te},S^{est}}[\{Y_i-\mu(X_i;\small\prod)\}^2-Y_i^2] \\ &+2E_{S^{te},S^{est}}[\{Y_i-\mu(X_i;\small\prod)\}\{(\mu(X_i;\small\prod)-\hat\mu(X_i;S^{est},\small\prod)\}] \\ &+E_{S^{te},S^{est}}[\{\mu(X_i;\small\prod)-\hat\mu(X_i;S^{est},\small\prod)\}^2] \end{aligned} \]

因为中间展开项期望为0, 所以公式变成:

\[\begin{aligned} EMSE(\small\prod)&=E_{S^{te},S^{est}}[\{Y_i-\mu(X_i;\small\prod)\}^2-Y_i^2]+E_{S^{te},S^{est}}[\{\mu(X_i;\small\prod)-\hat\mu(X_i;S^{est},\small\prod)\}^2] \\ &=E_{S^{te},S^{est}}[(\mu(X_i;\small\prod))^2-2Y_i\mu(X_i;\small\prod)]+E_{S^{te},S^{est}}[\{\mu(X_i;\small\prod)-\hat\mu(X_i;S^{est},\small\prod)\}^2] \end{aligned} \]

同样的,展开项的项期望为0,由于无偏估计=> \(\mu(X_i;\small \prod)=E_{S^{est}}[\hat \mu(X_i;S^{est};\small\prod)]\) ,最终公式变成:

\[-EMSE(\small\prod)=E_{X_i}[\mu^2(X_i;\small \prod)]-E_{S^{est},X_i}[\mathbb V(\hat\mu(X_i;S^{est}, \small\prod))] \]

其中,\(E_{S^{est},X_i}[\mathbb V(\hat\mu(X_i;S^{est}, \small\prod))]=E_{S^{te},S^{est}}[\{\hat\mu(X_i;S^{est},\small\prod)-\mu(X_i;\small\prod\}^2]\)

公式中第一项可以理解为偏差的平方,第二项理解为方差。为什么MSE可以被理解成偏差和方差的组合,以及展开项为0
我们来证明一下:(开个玩笑:),其实我是抄的Wikipedia,可以看证明1证明2

偏差项

接着分析偏差项:

\[\begin{aligned} E_{X_i}\left[\mu^2\left(X_i ; \Pi\right)\right] & =E_{X_i}\left\{\left[E_S\left(\hat{\mu}\left(X_i ; S, \Pi\right)\right)\right]^2\right\} \\ & =E_{X_i}\left\{E_S\left[\hat{\mu}^2\left(X_i ; S, \Pi\right)\right]-\mathbb V_S\left[\hat{\mu}\left(X_i ; S, \Pi\right)\right]\right\} \\ & =E_{X_i}\left\{E_S\left[\hat{\mu}^2\left(X_i ; S, \Pi\right)\right]\right\}-E_{X_i}\left\{\mathbb V_S\left[\hat{\mu}\left(X_i ; S, \Pi\right)\right]\right\} \end{aligned} \]

第一项总体估计值的期望使用训练集的样本,即:

\[\hat \mu^2(X_i;S^{tr},\small \prod)=E_S[\hat\mu^2(X_i;S;\small\prod)] \]

第二项方差项,叶子节点方差求均值

\[\mathbb V_S[\hat\mu^2(X_i;S;\small\prod)]=\frac{S_{S^{tr}}^2}{N^{tr}} \]

对于最外层的期望:

\[\begin{aligned} \hat{E}_{X_i}\left[\mu^2\left(X_i ; \Pi\right)\right] & =\sum_{l \in \Pi} \frac{N_l^{t r}}{N^{t r}} \hat{\mu}^2\left(X_i ; S^{t r}, \Pi\right)-\sum_{l \in \Pi} \frac{N_l^{t r}}{N^{t r}} \frac{S_{t r}^2[\ell(x, \Pi)]}{N_\ell^{t r}} \\ & =\frac{1}{N^{t r}} \sum_{i \in S^{t r}} \hat{\mu}^2\left(X_i ; S^{t r}, \Pi\right)-\frac{1}{N^{t r}} \sum_{\ell \in \Pi} S_{t r}^2[\ell(x, \Pi)] \end{aligned} \]

方差项

\[\mathbb V(\hat\mu(X_i;S^{est}, \small\prod)=\frac{S_{S^{tr}}^{2}(\ell(x;\small \prod)}{N^{est}(\ell(x;\small \prod))} \]

\[E_{S^{est},X_i}[\mathbb{V}\left(\hat{\mu}^2\left(X_i ; \mathcal{S}^{\text {est }}, \Pi\right) \mid i \in \mathcal{S}^{\text {te }}\right] \equiv \frac{1}{N^{\text {est }}} \cdot \sum_{\ell \in \Pi} S_{\mathcal{S}^{\text {tr }}}^2(\ell) \]

整合

最终估计量为:

\[-\hat{EMSE(S^{tr},\small \prod)}=\frac{1}{N^{\operatorname{tr}}} \sum_{i \in \mathcal{S}^{\mathrm{tr}}} \hat{\mu}^2\left(X_i ; \mathcal{S}^{\operatorname{tr}}, \Pi\right)-\left(\frac{1}{N^{\operatorname{tr}}}+\frac{1}{N^{\mathrm{est}}}\right) \cdot \sum_{\ell \in \Pi} S_{\mathcal{S}^{\operatorname{tr}}}^2(\ell) \]

\[=\frac{1}{N^{\operatorname{tr}}} \sum_{i \in \mathcal{S}^{\operatorname{tr}}} \hat{\mu}^2\left(X_i ; \mathcal{S}^{\operatorname{tr}}, \Pi\right)-\frac{2}{N^{\operatorname{tr}}} \cdot \sum_{\ell \in \Pi} S_{\mathcal{S}^{\operatorname{tr}}}^2(\ell) \]

其中, 偏差和方差不过的est估计量应该用est set,但是此处假设了train set和est set 同分布。

treatment effect 介入划分:处理异质效应

前面定义了MSE的范式,当需要考虑到异质效应时,定义异质效应:

\[\tau = \mu(1, x;\small\prod)-\mu(0;x;\small \prod) \]

很显然,我们永远观测不到异质性处理效应,因为我们无法观测到反事实,我们只能够估计处理效应,给出异质性处理效应的估计量:

\[\hat \tau(w,x;S,\small \prod)=\hat \tau(1,s;S,\small \prod)-\hat \tau(0,s;S,\small \prod) \]

因果效应下的EMSE为:

\[MSE_{\tau}=\frac{1}{\#(S^{te})}\sum_{i\in S^{te}} \{(\tau_i-\hat \tau(Xi;S^{est},\small \prod))^2-\tau_i^2\} \]

\[-\operatorname{EMSE}_\tau(\Pi)=\mathbb{E}_{X_i}\left[\tau^2\left(X_i ; \Pi\right)\right]-\mathbb{E}_{\mathcal{S}^{\text {est }}, X_i}\left[\mathbb{V}\left(\hat{\tau}^2\left(X_i ; \mathcal{S}^{\text {est }}, \Pi\right)\right]\right. \]

使用\(\tau\)替代了\(\mu\) , 偏差项, 带入整合公式:

\[-\hat {EMSE_{\tau}(S^{tr, \small\prod})}=\frac{1}{N^{tr}}\sum_{i\in S^{tr}} \hat \tau^2(Xi;S^{tr},\small \prod)-\frac{2}{N^{tr}}\sum_{\ell \in \small \prod}(\frac{S_{S_{treat}^{tr}}^2(\ell)}{p}+\frac{S_{S_{control}^{tr}}^2(\ell)}{1-p}) \]

其中,\(p\)表示相应treatment组的样本占比,该子式也是最终的计算节点分类标准的公式

有了节点划分方式之后,build tree的过程和CART树是一样的

推理过程

推理过程和决策树基本一样,树建好之后,只用根据每个node存储的特征和threshold进行path 遍历,走到叶子节点返回值即可。
一般来说,causal tree的叶子节点存储的

结构体之外还单独存储了一个 叫 value 的数组,主要是存储每个节点的预测值。对于两个Treatment来说,存储的大小就是1x2的list,第一个element存储了control的 正样本比例,第二个element存储了treatment的正样本比例。
一般来说,这个比例会做配平或者说惩罚:

所以,最终推理得到的是一个输入一个样本X,得到T-C的treatment effect,我们不用像meta-learning类的模型一样,自己手动减得到ITE。

Causal Tree总结

  1. 作者改进了MSE,主动减去了一项模型参数无关的\(E[Y_i^2]\)。改进方法的MSE包含了组内方差,这个方差越大,MSE就会越低,所以它能够在一定程度上限制模型的复杂性
  2. 把改进的 mse loss apply 到CATE中来指导节点分割 和 建立决策树
  3. 构建树的过程中,train set切割为了 \(S^{tr}\) 和 \(S^{est}\) 两部分,node的预测值由\(S^{est}\) 进行无偏估计,虽然最后实际上\(S^{est}\) 用train set替代了。
  4. 理论上causal tree 仅支持 两个Treatment

    如果使用causalml的package,如果存在多个T,非C组都会被置为一个T

REF

  1. https://hwcoder.top/Uplift-1
  2. 工具: scikit-uplift
  3. Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning
  4. Athey, Susan, and Guido Imbens. "Recursive partitioning for heterogeneous causal effects." Proceedings of the National Academy of Sciences 113.27 (2016): 7353-7360.
  5. https://zhuanlan.zhihu.com/p/115223013

标签:est,Inference,Tree,mu,small,prod,hat,Causal,left
From: https://www.cnblogs.com/zhouyc/p/18134498

相关文章

  • CF1788F XOR, Tree, and Queries
    CF1788FXOR,Tree,andQueries边权转点权+染色+构造首先对于限制,可以转化。设\(f_u\)表示\(1\)到\(u\)的异或和,那么限制\((u,v,w)\)就可以表示为\(f_u\oplusf_v=w\)。也就意味这如果我们将限制\((u,v,w)\)连边,要考虑的就变成\(f_u\)的赋值问题。这一步将边权转......
  • CF1626E Black and White Tree
    CF1626EBlackandWhiteTree换根dp树上路径行走问题,因其节点的转移不止于其子树有关,一般考虑换根dp或寻找新的转移顺序。在这题里,考虑一个以\(i\)为点的子树,判断\(i\)是否可以走到子树中某个黑点,设\(f_u\)表示\(u\)能否走到黑点,枚举儿子\(v\),有三种满足方式:\(......
  • git worktree与分支依赖隔离
    gitworktree介绍gitworktree 是Git命令,用于管理多分支工作区。使用场景:同时维护不同分支,隔离分支依赖差异:从原有项目开辟一个分支作为另一个新项目,当两个项目依赖差距越来越大时,每次切换分支后都需要重新安装依赖。通过gitworktree可以隔离两个分支的依赖,并且两个分支......
  • npm安装时一直idealTree:npm: sill idealTree buildDeps解决方案
    1.删除用户界面下的npmrc文件(注意一定是用户C:\Users\{账户}\下的.npmrc文件下不是nodejs里面)2.清除缓存,注意不要用npmcacheclean--force,容易出现npmWARNusing--forceIsurehopeyouknowwhatyouaredoing.要用:npmcacheverify3.设置镜像源:npmconfigsetregis......
  • Avalonia下拉可搜索树(TreeComboBox)
    1.需求分析  树形下拉的功能是ComboBox和TreeView的功能结合起来,再结合数据模板来实现这一功能。2.代码实现 1.创建UserControl集成TreeView控件`publicclassTreeComboBox:TreeView{privatebool_isPushTextChangedEvent=true;privateButtonClearButton;pri......
  • py_trees Sequence节点参数: memory=True | False
    Python行为树py_trees的一种注意情况:memory=True|Falsepy_trees…composites.Sequence(name=“root”,memory=True)官方文档是这样写的Ifconfiguredwithmemoryandachildreturnedwithrunningontheprevioustick,itwillproceeddirectlytotherunn......
  • Bridging Causal Discovery and Large Language Models
    本文是LLM系列文章,针对《BridgingCausalDiscoveryandLargeLanguageModels:AComprehensiveSurveyofIntegrativeApproachesandFutureDirections》的翻译。连接因果发现和大型语言模型:集成方法和未来方向的综合综述摘要1引言2背景3问题定义4当前的......
  • 论文阅读-Causality Inspired Representation Learning for Domain Generalization
    标题:CausalityInspiredRepresentationLearningforDomainGeneralization会议:CVPR统计学上的相关(stastisticaldependence)不一定表示因果关系。CIRL旨在挖掘内在的因果机制(intrinsiccausalmechanism)。名词解释:DG(DomainGeneralization)域泛化SCM(StructuralCau......
  • ACCESS TreeView控件的使用
    一.在窗体的设计模式下,选择ActiveX控件,然后找到 MicrosoftTreeViewControl6.0(SP6),确定 二.数据表的设计.重点在处理NodeID与ParentNodeID这两个字段的关系上.  三.TreeView数据的加载.下图是TreeView控件的所有事件.可以看到它本身是没有专用的加载事件的.需要在......
  • 论文阅读-Causality Inspired Framework for Model Interpretation
    标题:ACausalityInspiredFrameworkforModelInterpretation关键词:自然语言处理,因果推理,可解释机器学习论文链接:https://dl.acm.org/doi/pdf/10.1145/3580305.3599240会议:KDD1.简介解释(explanation)能否揭示模型表现的根本原因(rootcause)是XAI的重要问题。文章提出......