PolicyInterpreter

PolicyInterpreter 能够被用于解释由一个实例 PolicyTree 返回的策略。通过给不同的样例分配不同的策略, 它的目标是最大化一个子群的因果效应并把它们与那些有负的因果效应的分开。

类结构

class ylearn.interpreter.policy_interpreter.PolicyInterpreter(*, criterion='policy_reg', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, random_state=2022, max_leaf_nodes=None, max_features=None, min_impurity_decrease=0.0, ccp_alpha=0.0, min_weight_fraction_leaf=0.0)
参数:
  • criterion ({'policy_reg'}, default="'policy_reg'") –

    该函数用于测量划分的质量。训练树的准则是(使用Einstein notation)

    \[S = \sum_i g_{ik} y^k_{i},\]

    其中, \(g_{ik} = \phi(v_i)_k\) 是一个映射,从协变量, \(v_i\),到一个有且仅有一个非零元素的在 \(R^k\) 空间中的基向量。 通过使用这个准则,模型的目标是找到能够生成最大因果效应的治疗的索引,等价于找到最优的策略。

  • splitter ({"best", "random"}, default="best") – 用于选择每个节点划分的策略。支持的策略是”best”来选择最优划分和”random”来选择最优随机划分。

  • max_depth (int, default=None) – 树的最大深度。如果为None,那么节点一直扩展直到所有的叶子都是纯的或者所有的叶子都包含小于min_samples_split个样本。

  • min_samples_split (int or float, default=2) – 划分内部节点所需要的最小的样本数量: - 如果是int,那么考虑 min_samples_split 为最小数量。 - 如果是float, 那么 min_samples_split 是一个分数并且 ceil(min_samples_split * n_samples) 是对于每一个划分最小的样本数量。

  • min_samples_leaf (int or float, default=1) –

    在一个叶子节点需要的最小的样本数量。 一个在任意深度的划分点仅当它留下至少 min_samples_leaf 训练样本在它的左右分支时会被考虑。这可能有平滑模型的作用,尤其是在回归中。

    • 如果是int, 那么考虑 min_samples_leaf 为最小数量。

    • 如果是float, 那么 min_samples_leaf 是一个分数并且 ceil(min_samples_leaf * n_samples) 是对于每一个节点最小的样本数量。

  • min_weight_fraction_leaf (float, default=0.0) – 在一个叶子节点需要的所有权重总和(所有的输入样本)的最小加权分数。如果sample_weight没有被提供时,样本具有同样的权重。

  • max_features (int, float or {"sqrt", "log2"}, default=None) –

    寻找最佳划分时需要考虑的特征数量:

    • 如果是int,那么考虑 max_features 个特征在每个划分。

    • 如果是float,那么 max_features 是一个分数并且 int(max_features * n_features) 个特征在每个划分被考虑。

    • 如果是”sqrt”,那么 max_features=sqrt(n_features)

    • 如果是”log2”,那么 max_features=log2(n_features)

    • 如果是None,那么 max_features=n_features

  • random_state (int) – 控制估计器的随机性。

  • max_leaf_nodes (int, default to None) – 以最佳优先的方式使用 max_leaf_nodes 生成一棵树。 最佳节点被定义为杂质相对减少。 如果是None,那么叶子节点的数量没有限制。

  • min_impurity_decrease (float, default=0.0) –

    一个节点将会被划分如果这个划分引起杂质的减少大于或者等于这个值。 加权的杂质减少方程如下

    N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)

    其中 N 是样本的总数, N_t 是当前节点的样本数量, N_t_L 是左孩子节点的样本数量,并且 N_t_R 是右孩子节点的样本数量。 N, N_t, N_t_R 以及 N_t_L 全都是指加权和,如果 sample_weight 被传入。

fit(data, est_model, *, covariate=None, effect=None, effect_array=None)

拟合PolicyInterpreter模型来解释基于数据和est_model估计的因果效应的策略。

参数:
  • data (pandas.DataFrame) – 输入样本,用于est_model估计因果效应和用于CEInterpreter拟合。

  • est_model (estimator_model) – est_model应该为ylearn的任何合理的估计器模型且已经拟合过了并且能够估计CATE。

  • covariate (list of str, optional, default=None) – 协变量的名字。

  • effect (list of str, optional, default=None) – 在 data 中因果效应的名字。如果 effect_array 不是None,那么 effect 将会被忽略。

  • effect_array (numpy.ndarray, default=None) – 等待被 PolicyInterpreter 解释的因果效应。如果这没有被提供,那么 effect 不能是None.

返回:

Fitted PolicyInterpreter

返回类型:

PolicyInterpreter的实例

interpret(*, data=None)

在测试数据中解释拟合的模型。

参数:

data (pandas.DataFrame, optional, default=None) – DataFrame形式的测试数据。模型将仅使用这个如果v被设置为None。在这种情况下,如果数据也是None,那么训练的数据将会被使用。

返回:

对所有的样例解释的结果。

返回类型:

dict

plot(*, feature_names=None, max_depth=None, class_names=None, label='all', filled=False, node_ids=False, proportion=False, rounded=False, precision=3, ax=None, fontsize=None)

绘制树模型。 显示的样本计数由任何的可能存在的sample_weights加权。 可视化自动适应轴的大小。 使用 plt.figurefigsize 或者 dpi 参数来控制生成的大小。

返回:

List containing the artists for the annotation boxes making up the tree.

返回类型:

annotations : list of artists