首页
学习
活动
专区
圈层
工具
发布
27 篇文章
1
因果推断中期学习小结
2
因果推断笔记——因果图建模之微软开源的dowhy(一)
3
因果推断笔记—— 相关理论:Rubin Potential、Pearl、倾向性得分、与机器学习异同(二)
4
因果推断笔记——python 倾向性匹配PSM实现示例(三)
5
因果推断笔记——双重差分理论、假设、实践(四)
6
因果推断笔记——因果图建模之微软开源的EconML(五)
7
因果推断笔记——工具变量、内生性以及DeepIV(六)
9
因果推断笔记——uplift建模、meta元学习、Class Transformation Method(八)
10
因果推断笔记——数据科学领域因果推断案例集锦(九)
11
因果推断笔记——CV、机器人领域因果推断案例集锦(十)
12
因果推断笔记——入门学习因果推断在智能营销、补贴的通用框架(十一)
13
因果推断笔记——因果图建模之Uber开源的CausalML(十二)
14
跟着开源项目学因果推断——causalnex(十三)
15
跟着开源项目学因果推断——whynot(十四)
16
跟着开源项目学因果推断——mr_uplift(十五)
17
因果推断笔记——DML :Double Machine Learning案例学习(十六)
18
跟着开源项目学因果推断——FixedEffectModel 固定效应模型(十七)
19
因果推断杂记——因果推断与线性回归、SHAP值理论的关系(十九)
20
因果推断笔记——DR :Doubly Robust学习笔记(二十)
21
跟着开源项目学因果推断——CausalImpact 贝叶斯结构时间序列模型(二十一)
22
Google 因果推断的CausalImpact 贝叶斯结构时间序列模型(二十二)
23
因果推断与反事实预测——盒马KDD2021的一篇论文(二十三)
24
因果推断与反事实预测——利用DML进行价格弹性计算(二十三)
25
因果推断与反事实预测——利用DML进行价格弹性计算(二十四)
26
因果推断——借微软EconML测试用DML和deepIV进行反事实预测实验(二十五)
27
因果推断与反事实预测——几篇关联论文(二十六)

跟着开源项目学因果推断——whynot(十四)

文章目录

WhyNot是一个Python包,它提供了一个用于动态决策的实验沙箱,将因果推理和强化学习工具与具有挑战性的动态环境连接起来。 该软件包有助于开发、测试、基准测试和教学因果推理和顺序决策工具。

github: https://github.com/zykls/whynot 文档:https://whynot.readthedocs.io/en/latest/

下载:

代码语言:javascript
代码运行次数:0
复制
pip install whynot

举一个例子 hiv_simulator.ipynb

代码语言:javascript
代码运行次数:0
复制
%load_ext autoreload
%autoreload 2

import whynot.gym as gym
import numpy as np
import matplotlib.pyplot as plt
import torch

from scripts import utils
%matplotlib inline

# HIV环境
# Make the HIV environment and set random seed.
env = gym.make('HIV-v0')
np.random.seed(1)
env.seed(1)
torch.manual_seed(1)

# 策略
class NoTreatmentPolicy(utils.Policy):
    """The policy of always no treatment."""
    def __init__(self):
        super(NoTreatmentPolicy, self).__init__(env)
    
    def sample_action(self, obs):
        return 0
    
class MaxTreatmentPolicy(utils.Policy):
    """The policy of always applying both RT inhibitor and protease inhibitor."""
    def __init__(self):
        super(MaxTreatmentPolicy, self).__init__(env)
    
    def sample_action(self, obs):
        return 3
    
class RandomPolicy(utils.Policy):
    """The policy of picking a random action at each time step."""
    def __init__(self):
        super(RandomPolicy, self).__init__(env)
    
    def sample_action(self, obs):
        return np.random.randint(4)

# 模拟
learned_policy = utils.run_training_loop(
    env=env, n_iter=300, max_episode_length=100, batch_size=1000, learning_rate=1e-3)

几种策略,我们定义了一个基本的Policy类。每个策略都有一个sample_action函数,它接受一个观察并返回一个操作,一共四类:

  • NNPolicy 一种1层前馈神经网络,以状态维为输入维,一个包含8个神经元的隐藏层(状态维度为6),以动作作为输出维度。我们使用批处理归一化和ReLU激活。
  • 没有任何刺激策略 任何调整都不要,属于最基本的
  • 刺激最大策略 任何调整都需要,属于过分敏感
  • 随机的政策 采取随机行动而不考虑观察结果。
代码语言:javascript
代码运行次数:0
复制
# 其他三个策略
policies = {
    "learned_policy": learned_policy,
    "no_treatment": NoTreatmentPolicy(),
    "max_treatment": MaxTreatmentPolicy(),
    "random": RandomPolicy(),
}
utils.plot_sample_trajectory(env, policies, 100, wn.hiv.State.variable_names())
下一篇
举报
领券