econml.orf.DMLOrthoForest

class econml.orf.DMLOrthoForest(*, n_trees=500, min_leaf_size=10, max_depth=10, subsample_ratio=0.7, bootstrap=False, lambda_reg=0.01, model_T='auto', model_Y=<econml.sklearn_extensions.linear_model.WeightedLassoCVWrapper object>, model_T_final=None, model_Y_final=None, global_residualization=False, global_res_cv=2, discrete_treatment=False, treatment_featurizer=None, categories='auto', n_jobs=-1, backend='loky', verbose=3, batch_size='auto', random_state=None, allow_missing=False)[源码]

基类:econml.orf._ortho_forest.BaseOrthoForest

使用 DML 残差平方矩函数处理连续或离散处理的正交森林。

一种使用核两阶段估计学习异质处理效应的双森林方法。

参数
  • n_trees (int, 默认 500) – 森林中因果估计器的数量。

  • min_leaf_size (int, 默认 10) – 叶子中样本的最小数量。

  • max_depth (int, 默认 10) – 展开树时执行拆分的最大深度。

  • subsample_ratio (float, 默认 0.7) – 训练因果树时使用的总样本比例。大于 1.0 的值将被视为等于 1.0。当 bootstrap=True 时,该参数将被忽略。

  • bootstrap (bool, 默认 False) – 是否使用 bootstrap 子采样。

  • lambda_reg (float, 默认 0.01) – 应用于第二阶段拟合的局部线性部分的 \(ell_2\) 正则化惩罚的正则化系数。这不应用于局部截距,仅应用于线性分量的系数。

  • model_T (estimator, 默认 sklearn.linear_model.LassoCV(cv=3)) – 用于在每个叶子中残差化连续处理的估计器。必须实现 fitpredict 方法。

  • model_Y (estimator, 默认 sklearn.linear_model.LassoCV(cv=3)) – 用于在每个叶子中残差化结果的估计器。必须实现 fitpredict 方法。

  • model_T_final (estimator, 可选) – 用于预测时残差化处理的估计器。必须实现 fitpredict 方法。如果参数设置为 None,则默认为 model_T 参数的值。

  • model_Y_final (estimator, 可选) – 用于预测时残差化结果的估计器。必须实现 fitpredict 方法。如果参数设置为 None,则默认为 model_Y 参数的值。

  • global_residualization (bool, 默认 False) – 是否使用 model_Y_final 和 model_T_final 估计器对 Y 和 T 执行预先残差化,或者是否在每个目标点执行局部加权残差化。全局残差化计算量较小,但可能会损失一些统计功效,尤其是在 W 不为 None 的情况下。

  • global_res_cv (int, cross-validation generator or an iterable, 默认 2) – 构建 Y 和 T 的全局残差时用于交叉拟合的 CV 分割器规范。

  • discrete_treatment (bool, 默认 False) – 是否应将处理视为分类变量。如果为 True,则将处理 T 进行独热编码,并且 model_T 被视为必须具有 predict_proba 方法的分类器。

  • treatment_featurizer (transformer, 可选) – 必须支持 fit_transform 和 transform。用于在最终的 CATE 回归中创建复合处理。最终的 CATE 将在 featurizer.fit_transform(T) 的输出上进行训练。如果 featurizer=None,则 CATE 在 T 上进行训练。

  • categories (array_like or ‘auto’, 默认 ‘auto’) – 预先指定的处理类别列表。如果为 ‘auto’,则在 fit 时自动识别类别。

  • n_jobs (int, 默认 -1) – 对于 fit()effect(),并行运行的作业数量。-1 表示使用所有处理器。由于 OrthoForest 方法计算量大,建议将 n_jobs 设置为 -1。

  • backend (‘threading’ or ‘loky’, 默认 ‘loky’) – 用于 joblib 库并行化的后端。

  • verbose (int, 默认 3) – 详细程度

  • batch_size (int or ‘auto’, 默认 ‘auto’) – 并行化作业的批处理大小

  • random_state (int, RandomState instance, or None, 默认 None) – 如果为 int,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,则随机数生成器是 RandomState 实例,由 np.random 使用。

  • allow_missing (bool) – 是否允许 W 中存在缺失值。如果为 True,则需要提供可以处理缺失值的 nuisance_models。

__init__(*, n_trees=500, min_leaf_size=10, max_depth=10, subsample_ratio=0.7, bootstrap=False, lambda_reg=0.01, model_T='auto', model_Y=<econml.sklearn_extensions.linear_model.WeightedLassoCVWrapper object>, model_T_final=None, model_Y_final=None, global_residualization=False, global_res_cv=2, discrete_treatment=False, treatment_featurizer=None, categories='auto', n_jobs=-1, backend='loky', verbose=3, batch_size='auto', random_state=None, allow_missing=False)[源码]

方法

__init__(*[, n_trees, min_leaf_size, ...])

ate([X, T0, T1])

计算平均处理效应 \(E_X[\tau(X, T0, T1)]\)

ate_inference([X, T0, T1])

模型生成的数量 \(E_X[\tau(X, T0, T1)]\) 的推断结果。

ate_interval([X, T0, T1, alpha])

模型生成的数量 \(E_X[\tau(X, T0, T1)]\) 的置信区间。

cate_feature_names([feature_names])

获取特征名称的公共接口。

cate_output_names([output_names])

获取输出名称的公共接口。

cate_treatment_names([treatment_names])

获取处理名称。

const_marginal_ate([X])

计算平均常数边际 CATE \(E_X[\theta(X)]\)

const_marginal_ate_inference([X])

模型生成的数量 \(E_X[\theta(X)]\) 的推断结果。

const_marginal_ate_interval([X, alpha])

模型生成的数量 \(E_X[\theta(X)]\) 的置信区间。

const_marginal_effect(X)

计算以特征向量 X 为条件的常数边际 CATE θ(·)。

const_marginal_effect_inference([X])

模型生成的数量 \(\theta(X)\) 的推断结果。

const_marginal_effect_interval([X, alpha])

模型生成的数量 \(\theta(X)\) 的置信区间。

effect([X, T0, T1])

计算异质处理效应 \(\tau(X, T0, T1)\)

effect_inference([X, T0, T1])

模型生成的数量 \(\tau(X, T0, T1)\) 的推断结果。

effect_interval([X, T0, T1, alpha])

模型生成的数量 \(\tau(X, T0, T1)\) 的置信区间。

fit(Y, T, *, X[, W, inference])

根据训练集 (Y, T, X, W) 构建一个正交随机森林。

marginal_ate(T[, X])

计算平均边际效应 \(E_{T, X}[\partial\tau(T, X)]\)

marginal_ate_inference(T[, X])

模型生成的数量 \(E_{T,X}[\partial \tau(T, X)]\) 的推断结果。

marginal_ate_interval(T[, X, alpha])

模型生成的数量 \(E_{T,X}[\partial \tau(T, X)]\) 的置信区间。

marginal_effect(T[, X])

计算异质边际效应 \(\partial\tau(T, X)\)

marginal_effect_inference(T[, X])

模型生成的数量 \(\partial \tau(T, X)\) 的推断结果。

marginal_effect_interval(T[, X, alpha])

模型生成的数量 \(\partial \tau(T, X)\) 的置信区间。

shap_values(X, *[, feature_names, ...])

最终阶段模型 (const_marginal_effect) 的 Shap 值

属性

dowhy

获取 DoWhyWrapper 实例以启用 dowhy 包的其他功能。

transformer

ate(X=None, *, T0=0, T1=1)

计算平均处理效应 \(E_X[\tau(X, T0, T1)]\)

效果在两个处理点之间计算,并在 X 变量总体上平均。

参数
  • T0 ((m, d_t) 矩阵或长度为 m 的向量) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵或长度为 m 的向量) – 每个样本的目标处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

τ – 对每个结果的平均处理效应。注意,当 Y 是向量而不是二维数组时,结果将是标量。

返回类型

float 或 (d_y,) 数组

ate_inference(X=None, *, T0=0, T1=1)

模型生成的数量 \(E_X[\tau(X, T0, T1)]\) 的推断结果。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • T0 ((m, d_t) 矩阵或长度为 m 的向量, 默认 0) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵或长度为 m 的向量, 默认 1) – 每个样本的目标处理

返回

PopulationSummaryResults – 推断结果实例包含预测和预测标准误差,并可以根据需要计算置信区间、z 统计量和 p 值。它还可以输出这些推断结果的数据框摘要。

返回类型

对象

ate_interval(X=None, *, T0=0, T1=1, alpha=0.05)

模型生成的数量 \(E_X[\tau(X, T0, T1)]\) 的置信区间。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • T0 ((m, d_t) 矩阵或长度为 m 的向量, 默认 0) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵或长度为 m 的向量, 默认 1) – 每个样本的目标处理

  • alpha (float 在 [0, 1] 之间, 默认 0.05) – 报告区间的总置信水平。报告 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量置信区间的下限和上限。

返回类型

tuple(类型 ate(X, T0, T1), 类型 ate(X, T0, T1)) )

cate_feature_names(feature_names=None)

获取特征名称的公共接口。

由对输入特征应用转换的估计器覆盖。

参数

feature_names (长度为 X.shape[1] 的字符串列表或 None) – 输入特征的名称。如果为 None 且 X 是一个数据框,则默认为数据框的列名。

返回

out_feature_names – 返回特征名称。

返回类型

字符串列表或 None

cate_output_names(output_names=None)

获取输出名称的公共接口。

由对输出应用转换的估计器覆盖。

参数

output_names (长度为 Y.shape[1] 的字符串列表或 None) – 结果的名称。如果为 None 且传递给 fit 的 Y 是数据框,则默认为数据框的列名。

返回

output_names – 返回输出名称。

返回类型

字符串列表

cate_treatment_names(treatment_names=None)

获取处理名称。

如果处理是离散的或经过特征化的,它将返回扩展的处理名称。

参数

treatment_names (长度为 T.shape[1] 的字符串列表, 可选) – 处理的名称。如果为 None 且传递给 fit 的 T 是数据框,则默认为数据框的列名。

返回

out_treatment_names – 返回(可能扩展的)处理名称。

返回类型

字符串列表

const_marginal_ate(X=None)

计算平均常数边际 CATE \(E_X[\theta(X)]\)

参数

X ((m, d_x) 矩阵, 可选) – 每个样本的特征。

返回

theta – 每个处理对每个结果的平均常数边际 CATE。注意,当 Y 或特征化的 T(如果 treatment_featurizer 为 None,则为 T)是向量而不是二维数组时,输出中相应的单维将被折叠(例如,如果两者都是向量,则该方法的输出也将是标量)

返回类型

(d_y, d_f_t) 矩阵,其中 d_f_t 是特征化处理的维度。如果 treatment_featurizer 为 None,d_f_t = d_t。

const_marginal_ate_inference(X=None)

模型生成的数量 \(E_X[\theta(X)]\) 的推断结果。仅当调用 fit 方法时 inference 不为 None 时可用。

参数

X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

PopulationSummaryResults – 推断结果实例包含预测和预测标准误差,并可以根据需要计算置信区间、z 统计量和 p 值。它还可以输出这些推断结果的数据框摘要。

返回类型

对象

const_marginal_ate_interval(X=None, *, alpha=0.05)

模型生成的数量 \(E_X[\theta(X)]\) 的置信区间。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • alpha (float 在 [0, 1] 之间, 默认 0.05) – 报告区间的总置信水平。报告 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量置信区间的下限和上限。

返回类型

tuple(类型 const_marginal_ate(X) , 类型 const_marginal_ate(X) )

const_marginal_effect(X)[源码]

计算以特征向量 X 为条件的常数边际 CATE θ(·)。

参数

X (array_like, shape (n, d_x)) – 捕捉异质性的特征向量。

返回

Theta – 每个样本的每个处理的常数边际 CATE。

返回类型

矩阵, shape (n, d_f_t),其中 d_f_t 是特征化处理的维度。如果 treatment_featurizer 为 None,d_f_t = d_t

const_marginal_effect_inference(X=None)

模型生成的数量 \(\theta(X)\) 的推断结果。仅当调用 fit 方法时 inference 不为 None 时可用。

参数

X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

InferenceResults – 推断结果实例包含预测和预测标准误差,并可以根据需要计算置信区间、z 统计量和 p 值。它还可以输出这些推断结果的数据框摘要。

返回类型

对象

const_marginal_effect_interval(X=None, *, alpha=0.05)

模型生成的数量 \(\theta(X)\) 的置信区间。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • alpha (float 在 [0, 1] 之间, 默认 0.05) – 报告区间的总置信水平。报告 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量置信区间的下限和上限。

返回类型

tuple(类型 const_marginal_effect(X) , 类型 const_marginal_effect(X) )

effect(X=None, *, T0=0, T1=1)

计算异质处理效应 \(\tau(X, T0, T1)\)

效果在两个处理点之间计算,并以一组 m 个测试样本 \(\{T0_i, T1_i, X_i\}\) 的特征向量为条件。

参数
  • T0 ((m, d_t) 矩阵或长度为 m 的向量) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵或长度为 m 的向量) – 每个样本的目标处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

τ – 对每个样本的每个结果的异质处理效应。注意,当 Y 是向量而不是二维数组时,相应的单维将被折叠(因此此方法将返回一个向量)

返回类型

(m, d_y) 矩阵

effect_inference(X=None, *, T0=0, T1=1)

模型生成的数量 \(\tau(X, T0, T1)\) 的推断结果。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • T0 ((m, d_t) 矩阵或长度为 m 的向量, 默认 0) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵或长度为 m 的向量, 默认 1) – 每个样本的目标处理

返回

InferenceResults – 推断结果实例包含预测和预测标准误差,并可以根据需要计算置信区间、z 统计量和 p 值。它还可以输出这些推断结果的数据框摘要。

返回类型

对象

effect_interval(X=None, *, T0=0, T1=1, alpha=0.05)

模型生成的数量 \(\tau(X, T0, T1)\) 的置信区间。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • T0 ((m, d_t) 矩阵或长度为 m 的向量, 默认 0) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵或长度为 m 的向量, 默认 1) – 每个样本的目标处理

  • alpha (float 在 [0, 1] 之间, 默认 0.05) – 报告区间的总置信水平。报告 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量置信区间的下限和上限。

返回类型

tuple(类型 effect(X, T0, T1), 类型 effect(X, T0, T1)) )

fit(Y, T, *, X, W=None, inference='auto')[源码]

根据训练集 (Y, T, X, W) 构建一个正交随机森林。

参数
  • Y (array_like, shape (n, )) – 处理策略的结果。

  • T (array_like, shape (n, d_t)) – 处理策略。

  • X (array_like, shape (n, d_x)) – 捕捉异质性的特征向量。

  • W (array_like, shape (n, d_w), 可选) – 高维控制变量。

  • inference (str, Inference instance, or None) – 执行推断的方法。此估计器支持 ‘bootstrap’(或 BootstrapInference 的实例)和 ‘blb’(或 BLBInference 的实例)

返回

self

返回类型

自身实例。

marginal_ate(T, X=None)

计算平均边际效应 \(E_{T, X}[\partial\tau(T, X)]\)

边际效应围绕一个基础处理点计算,并在 X 总体上平均。

参数
  • T ((m, d_t) matrix) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

grad_tau – 对每个结果的平均边际效应。注意,当 Y 或 T 是向量而不是二维数组时,输出中相应的单维将被折叠(例如,如果两者都是向量,则此方法的输出将是标量)

返回类型

(d_y, d_t) 数组

marginal_ate_inference(T, X=None)

模型生成的数量 \(E_{T,X}[\partial \tau(T, X)]\) 的推断结果。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • T ((m, d_t) matrix) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

PopulationSummaryResults – 推断结果实例包含预测和预测标准误差,并可以根据需要计算置信区间、z 统计量和 p 值。它还可以输出这些推断结果的数据框摘要。

返回类型

对象

marginal_ate_interval(T, X=None, *, alpha=0.05)

模型生成的数量 \(E_{T,X}[\partial \tau(T, X)]\) 的置信区间。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • T ((m, d_t) matrix) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • alpha (float 在 [0, 1] 之间, 默认 0.05) – 报告区间的总置信水平。报告 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量置信区间的下限和上限。

返回类型

tuple(类型 marginal_ate(T, X), 类型 marginal_ate(T, X) )

marginal_effect(T, X=None)

计算异质边际效应 \(\partial\tau(T, X)\)

边际效应围绕一个基础处理点计算,并以一组 m 个测试样本 \(\{T_i, X_i\}\) 的特征向量为条件。如果 treatment_featurizer 为 None,则此计算中忽略基础处理,结果等同于 const_marginal_effect。

参数
  • T ((m, d_t) matrix) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

grad_tau – 对每个样本的每个结果的异质边际效应。注意,当 Y 或 T 是向量而不是二维数组时,输出中相应的单维将被折叠(例如,如果两者都是向量,则此方法的输出也将是向量)

返回类型

(m, d_y, d_t) 数组

marginal_effect_inference(T, X=None)

模型生成的数量 \(\partial \tau(T, X)\) 的推断结果。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • T ((m, d_t) matrix) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

InferenceResults – 推断结果实例包含预测和预测标准误差,并可以根据需要计算置信区间、z 统计量和 p 值。它还可以输出这些推断结果的数据框摘要。

返回类型

对象

marginal_effect_interval(T, X=None, *, alpha=0.05)

模型生成的数量 \(\partial \tau(T, X)\) 的置信区间。仅当调用 fit 方法时 inference 不为 None 时可用。

参数
  • T ((m, d_t) matrix) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • alpha (float 在 [0, 1] 之间, 默认 0.05) – 报告区间的总置信水平。报告 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量置信区间的下限和上限。

返回类型

tuple(类型 marginal_effect(T, X), 类型 marginal_effect(T, X) )

shap_values(X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100)

最终阶段模型 (const_marginal_effect) 的 Shap 值

参数
  • X ((m, d_x) 矩阵) – 每个样本的特征。应与最终阶段拟合的 X 的形状相同。

  • feature_names (长度为 X.shape[1] 的字符串列表, 可选) – 输入特征的名称。

  • treatment_names (list, 可选) – 特征化处理的名称。在离散处理情况下,名称不应包含基线处理的名称(即,默认按字母顺序较小的控制处理)

  • output_names (list, 可选) – 结果的名称。

  • background_samples (int , 默认 100) – 用于计算基线效应的样本数量。如果为 None,则使用所有样本。

返回

shap_outs – 一个嵌套字典,使用每个输出名称(例如,当 output_names=None 时为 ‘Y0’,‘Y1’ 等)和每个处理名称(例如,当 treatment_names=None 时为 ‘T0’,‘T1’ 等)作为键,shap_values 解释对象作为值。如果 fit 时输入数据也包含元数据(例如,是 pandas DataFrames),则使用处理、结果和特征的列元数据而不是上述默认值(除非用户通过显式传递相应的名称进行覆盖)。

返回类型

Explanation 对象嵌套字典

property dowhy

获取 DoWhyWrapper 实例以启用 dowhy 包的其他功能(例如因果图、反驳检验等)。

返回

DoWhyWrapperDoWhyWrapper 的实例

返回类型

实例