CausalEGM安装使用

1代码来源

github:https://github.com/SUwonglab/CausalEGM/tree/main/src

pip:Tutorial for Python Users — CausalEGM documentation

安装:Installation — CausalEGM documentation

版本:

CausalEGM安装使用_第1张图片

2原理

关于CausalEGM

根据观察数据,推断治疗的因果效应对于许多科学和工程问题至关重要,并引起了各个领域的巨大兴趣。了解因果关系的最有效方法是进行随机对照试验(RCT)。然而,RCT 耗时、昂贵且普遍性存在问题。相比之下,观察性研究可以提供有价值的证据并检查“现实世界”环境中的效果。在现实世界的应用中,由于混杂因素引入的选择偏差,治疗通常不是随机分配的。准确估计因果效应涉及处理混杂因素,这可能会影响治疗和结果。未能针对混杂效应进行调整可能会导致估计偏差和错误结论。

CausalEGM安装使用_第2张图片

 Density estimation using deep generative neural networks

意义

密度估计是统计学中最基本的问题之一。由于“维数灾难”,估计高维数据的密度是出了名的困难。在这里,我们介绍一种基于深度生成神经网络的新型通用密度估计器。通过对通常分布在降维流形周围的数据进行建模,我们展示了如何利用双向生成神经网络(例如,cycleGAN)的功能来显式评估数据密度。模拟和真实数据实验表明我们的方法在广泛的问题上是有效的。这种方法在许多需要精确密度估计器的应用中应该很有帮助。

抽象的

密度估计是统计学和机器学习中的基本问题之一。在这项研究中,我们提出了 Roundtrip,一种基于深度生成神经网络的通用密度估计计算框架。Roundtrip 保留了生成对抗网络 (GAN) 等深度生成模型的生成能力,同时还提供密度值的估计,从而支持数据生成和密度估计。与之前的神经密度估计器对从潜在空间到数据空间的转换施加严格的条件不同,Roundtrip 可以使用更通用的映射,其中目标密度是通过学习从基本密度(例如高斯分布)导出的流形来建模的。Roundtrip 为 GAN 模型提供了一个统计框架,其中密度值的显式评估是可行的。在数值实验中,Roundtrip 在各种密度估计任务中都超越了最先进的性能。

配置 CausalEGM 模型

在创建 CausalEGM 模型之前,dict应创建一个 python 对象来部署 CausalEGM 模型的超参数,其中包括潜在特征的维度、神经网络架构等。

详细的超参数描述如下。

配置参数

描述

输出目录

输出目录用于保存模型训练过程中的结果。默认: ”。”

数据集

用于指示输入数据的数据集名称。默认值:“我的数据”

z_尺寸

编码器输出的潜在维度 (e(V)_0~3)。默认值:[3,3,6,6]

v_dim

协变量的维度。

LR

学习率。默认值:0.0002

g_单位

解码器/生成器网络 G 的单元数量。默认值: [64,64,64,64,64]

e_单位

编码器网络 E 的单元数量。默认值: [64,64,64,64,64]

f_单位

F 网络的单元数量。默认值:[64,32,8]

h_单位

H 网络的单元数量。默认值:[64,32,8]

dz_单位

潜在空间中鉴别器网络的单元数量。默认值:[64,32,8]

dz_单位

协变量空间中鉴别器网络的单元数。默认值:[64,32,8]

α

重建损失系数。 默认值:1

贝塔

往返损耗系数。默认值:1

伽玛

梯度惩罚损失系数。默认值:10

g_d_频率

更新鉴别器和生成器的频率。默认值:5

保存资源

模型训练过程中是否保存结果。 默认值: True

保存模型

是否保存模型权重。默认值: False

二进制处理

是否使用二元处理设置。 默认值: True

使用_z_rec

使用潜在特征的重建。默认值: True

使用_v_gan

使用协变量的 GAN 分布匹配。 默认值: True

x_最小值

连续治疗环境中剂量反应间隔的左界。默认值:0

最大x

连续治疗环境中剂量反应间隔的右界。默认值:3

配置参数对于创建 CausalEGM 模型是必需的。以下是配置参数的一些技巧。

  1. z_dims对性能有显着影响,请参阅src/configs获取指导。

  2. 如果save_resTrue,训练期间的结果将保存在output_dir中

  3. 建议use_v_gan在二元治疗设置下为True ,在连续治疗设置下为False

baseline 

import CausalEGM as cegm
print("Currently use version v%s of CausalEGM."%cegm.__version__)
import yaml
params = yaml.safe_load(open('../../src/configs/Semi_acic.yaml', 'r'))
print(params)
#{'dataset': 'Semi_acic', 'output_dir': '.', 'v_dim': 100, 'z_dims': [3, 3, 6, 6], 'lr': 0.0002, 'alpha': 1, 'beta': 1, 'gamma': 10, 'g_d_freq': 5, 'g_units': [64, 64, 64, 64, 64], 'e_units': [64, 64, 64, 64, 64], 'f_units': [64, 32, 8], 'h_units': [64, 32, 8], 'dz_units': [64, 32, 8], 'dv_units': [64, 32, 8], 'save_res': True, 'save_model': False, 'binary_treatment': False, 'use_z_rec': True, 'use_v_gan': True, 'x_min': 0, 'x_max': 3}
model = cegm.CausalEGM(params=params,random_seed=123)
#get the data from the ACIC 2018 competition dataset with a specified ufid.
#ds = Semi_acic_sampler(path='../data/ACIC_2018',ufid='d5bd8e4814904c58a79d7cdcd7c2a1bb')
# >>> ds = Base_sampler(x=x,y=y,v=v)
# >>> batch = ds.next_batch() # get a batch of data
# >>> data = ds.load_all() # get all data as a triplet
# x,y,v = cegm.Semi_acic_sampler(path='../../../../data/ACIC_2018',ufid='d5bd8e4814904c58a79d7cdcd7c2a1bb').load_all()
#x,y,v = cegm.Semi_acic_sampler(path='../../../../data/ACIC_2018',ufid='d5bd8e4814904c58a79d7cdcd7c2a1bb').load_all()
import numpy as np
x = np.random.normal(size=(2000,))
y = np.random.normal(size=(2000,))
v = np.random.normal(size=(2000,100))
print(x.shape,y.shape,v.shape)
model.train(data=[x,y,v],n_iter=100,save_format='npy',verbose=False)

错误

这个错误信息表明在你的代码中存在一个占位符张量(placeholder tensor) 'Placeholder/_10',它的 dtype 是 float,形状是 [2000, 10],但是在执行过程中没有为它提供必要的数据值。

在 TensorFlow 中,占位符张量是一种特殊的张量,它在图构建阶段没有具体的值,而是在运行阶段通过 feed_dict 或者 tf.data 来提供数据。根据错误信息,你需要在执行代码时,确保为占位符 'Placeholder/_10' 提供一个正确形状和 dtype 的数据值。

要解决这个问题,你可以使用 feed_dict 来为占位符提供数据,例如:

import tensorflow as tf

# 创建占位符
placeholder = tf.placeholder(dtype=tf.float32, shape=[2000, 10], name='Placeholder')

# 创建一个 TensorFlow 会话
with tf.Session() as sess:
    # 使用 feed_dict 为占位符提供数据
    data = ...  # 替换成你的数据
    result = sess.run(placeholder, feed_dict={placeholder: data})

ACIC 

  • Estimating Treatment Effects over Time with Causal Forests:An application to the ACIC 2022 Data Challenge

参考

  1. CausalEGM:通过编码生成建模的通用因果推理框架 
  2. Project MUSE - Estimating Treatment Effects over Time with Causal Forests: An application to the ACIC 2022 Data Challenge
  3. Estimating Treatment Effects over Time with Causal Forests:An application to the ACIC 2022 Data Challenge

  4. https://github.com/SUwonglab/CausalEGM/blob/main/src/CausalEGM/causalEGM.py

你可能感兴趣的:(因果推断,论文阅读,人工智能,机器学习)