DP可解释增强回归器#

算法描述链接: DPEBM

class interpret.privacy.DPExplainableBoostingRegressor(feature_names=None, feature_types=None, max_bins=32, exclude=None, validation_size=0, outer_bags=1, learning_rate=0.01, max_rounds=300, max_leaves=3, n_jobs=- 2, random_state=None, epsilon=1.0, delta=1e-05, composition='gdp', bin_budget_frac=0.1, privacy_bounds=None, privacy_target_min=None, privacy_target_max=None)#

差分隐私可解释增强回归器。

请注意,许多参数的默认值与常规 EBM 不同。

参数:
  • feature_names (str 列表, 默认值=None) – 特征名称列表。

  • feature_types (FeatureType 列表, 默认值=None) –

    特征类型列表。对于 DP-EBM,应完全指定 feature_types。如果使用自动检测器,它会检查数据,并且不包含在隐私预算中。如果使用自动检测,将发出隐私警告。FeatureType 可以是

    • ’auto’:自动检测(不尊重隐私预算!)。

    • ’continuous’:使用私有连续分箱。

    • [str 列表]:顺序分类,其中顺序有意义。例如:[“low”, “medium”, “high”]。使用私有分类分箱。

    • ’nominal’:分类,其中顺序无意义。例如:国家名称。使用私有分类分箱。

  • max_bins (int, 默认值=32) – 每个特征的最大分箱数。

  • exclude (特征索引|名称 元组列表, 默认值=None) – 要排除的特征。

  • validation_size (intfloat, 默认值=0) –

    验证集大小。如果需要外部 bag 或误差条,则需要验证集。

    • 整数 (1 <= validation_size):放入验证集的样本计数

    • 百分比 (validation_size < 1.0):放入验证集的数据百分比

    • 0:外部 bag 无效,误差范围将被消除

  • outer_bags (int, 默认值=1) – 外部 bag 的数量。外部 bag 用于生成误差范围并帮助平滑图表。

  • learning_rate (float, 默认值=0.01) – 增强(boosting)的学习率。

  • max_rounds (int, 默认值=300) – 增强的总轮数,每轮有 n_terms 增强步。

  • max_leaves (int, 默认值=3) – 每棵树允许的最大叶子数。

  • n_jobs (int, 默认值=-2) – 并行运行的作业数。负整数按照 joblib 的公式 (n_cpus + 1 + n_jobs) 解释,就像 scikit-learn 一样。例如:-2 表示使用除 1 个线程之外的所有线程。

  • random_state (intNone, 默认值=None) – 随机状态。None 使用 device_random 并生成不可重复的序列。为了隐私应设置为 ‘None’,但可以设置为整数以进行测试和重复性。

  • epsilon (float, 默认值=1.0) – 要花费的总隐私预算。

  • delta (float, 默认值=1e-5) – 差分隐私保证的加性分量。应小于 1/n_training_samples。

  • composition ({'gdp', 'classic'}, 默认值='gdp') – 跟踪噪声聚合的方法。

  • bin_budget_frac (float, 默认值=0.1) – 用于私有分箱的总 epsilon 预算的百分比。

  • privacy_bounds (Union[np.ndarray, Mapping[Union[int, str], Tuple[float, float]]], 默认值=None) – 指定每个特征的已知最小值/最大值。如果为 None,DP-EBM 会显示警告并使用数据确定这些值。

  • privacy_target_min (float, 默认值=None) – 已知目标最小值。‘y’ 值将被剪切到此最小值。如果为 None,DP-EBM 会显示警告并使用数据确定此值。

  • privacy_target_max (float, 默认值=None) – 已知目标最大值。‘y’ 值将被剪切到此最大值。如果为 None,DP-EBM 会显示警告并使用数据确定此值。

变量:
  • n_features_in_ (int) – 特征数量。

  • feature_names_in_ (str 列表) – 已解析的特征名称。名称可以来自 feature_names、X 或自动生成。

  • feature_types_in_ (str 列表) – 已解析的特征类型。可以是:‘continuous’(连续)、‘nominal’(名义)或 ‘ordinal’(有序)。

  • bins_ (List[Union[List[Dict[str, int]], List[array of float with shape (n_cuts,)]]]) – 每个特征的分箱定义列表。列表中的每个特征包含一个分箱分辨率列表。分箱分辨率列表中的第一个项用于主效应特征的分箱。如果分箱分辨率列表中有更多项,它们定义了连续分辨率级别的分箱。索引 1 处的项(如果存在)定义了对的分箱。最后的分箱分辨率定义了所有连续交互级别的分箱。如果分箱分辨率列表包含字典,则特征是‘nominal’(名义)或‘ordinal’(有序)分类。如果分箱分辨率列表包含数组,则特征是‘continuous’(连续),并且数组将包含将连续值分隔到分箱中的浮点截止点。

  • feature_bounds_ (形状为 (n_features, 2) 的浮点数组) – 每个特征的最小值/最大值边界。feature_bounds_[feature_index, 0] 是特征的最小值,feature_bounds_[feature_index, 1] 是特征的最大值。分类特征的最小值和最大值为 NaN。

  • term_features_ (特征索引元组列表) – 模型中使用的加性项及其组成的特征索引。

  • term_names_ (str 列表) – 项名称列表。

  • bin_weights_ (形状为 (n_bins) 的浮点数组列表) – 每个项在其分箱中的总样本权重列表。

  • bagged_scores_ (形状为 (n_outer_bags, n_bins) 的浮点数组列表) – 每个项的 bagged 模型得分列表。

  • term_scores_ (形状为 (n_bins) 的浮点数组列表) – 每个项的模型得分列表。

  • standard_deviations_ (形状为 (n_bins) 的浮点数组列表) – 每个项的 bagged 模型得分的标准差列表。

  • link_ (str) – 用于将预测或目标转换为线性空间加性得分,并通过反向链接进行逆转换的链接函数。可能的值包括:“custom_regression”、“power”、“identity”、“log”、“inverse”、“inverse_square”、“sqrt”。

  • link_param_ (float) – 可由链接函数使用的浮点值。主要用于 power 链接。

  • bag_weights_ (形状为 (n_outer_bags,) 的浮点数组) – 每个 bag 中总权重的每 bag 记录。

  • best_iteration_ (形状为 (n_stages, n_outer_bags) 的 int 数组) – 在每个阶段执行的增强迭代次数,直到早停或达到 max_rounds。通常,主效应增强迭代的计数将位于 best_iteration_[0] 中。

  • intercept_ (float) – 模型的截距。

  • bagged_intercept_ (形状为 (n_outer_bags,) 的浮点数组) – 模型的 bagged 截距。

  • min_target_ (float) – 在 ‘y’ 中找到的最小值,如果提供了 privacy_target_min,则为该值。

  • max_target_ (float) – 在 ‘y’ 中找到的最大值,如果提供了 privacy_target_max,则为该值。

  • noise_scale_binning_ (float) – 分箱期间的噪声尺度。

  • noise_scale_boosting_ (float) – 增强期间的噪声尺度。

copy()#

对 EBM 进行深度复制。

返回:

新的副本。

eval_terms(X)#

项得分与调用 ebm.explain_local(x) 获得的局部解释值相同。

调用 interpret.utils.inv_link(ebm.eval_terms(X).sum(axis=1) + ebm.intercept_, ebm.link_) 等效于回归中调用 ebm.predict(X) 或分类中调用 ebm.predict_proba(X)。

参数:

X – 样本的 NumPy 数组。

返回:

每个样本每个项的局部解释得分。

explain_global(name=None)#

为模型提供全局解释。

参数:

name – 用户定义的解释名称。

返回:

一个解释对象,将特征-值对可视化为水平条形图。

explain_local(X, y=None, name=None, init_score=None)#

为提供的样本提供局部解释。

参数:
  • X – 用于解释的 X 的 NumPy 数组。

  • y – 用于解释的 y 的 NumPy 向量。

  • name – 用户定义的解释名称。

  • init_score – 可选。可以是能生成分数的模型,也可以是每个样本的初始化分数。如果是样本分数,其长度应与 X 相同。

返回:

一个解释对象,将每个样本的特征-值对可视化为水平条形图。

fit(X, y, sample_weight=None, bags=None, init_score=None)#

使用提供的样本拟合模型。

参数:
  • X – 训练样本的 NumPy 数组。

  • y – 作为训练标签的 NumPy 数组。

  • sample_weight – 可选的每个样本的权重数组。长度应与 X 和 y 相同。

  • bags – 可选的 bag 定义。第一维长度应等于 outer_bags 的数量。第二维长度应等于样本数量。内容应为训练集 +1,验证集 -1,不包含在 bag 中则为 0。非 1 的数字表示在训练集或验证集中包含样本的次数。

  • init_score – 可选。可以是能生成分数的模型,也可以是每个样本的初始化分数。如果是样本分数,其长度应与 X 相同。

返回:

模型本身。

monotonize(term, increasing='auto', passthrough=0.0)#

使用保序回归调整项使其单调。

一个重要的考虑因素是,此函数仅调整单个项,并且不会修改成对项。当需要全局单调的特征时,应将包含该特征的任何成对项从模型中排除。

参数:
  • term – 要进行单调化的项的索引或名称

  • increasing – ‘auto’ 或 bool。‘auto’ 根据 Spearman 相关性估计决定方向。

  • passthrough – 单调化过程可能导致模型对训练集的平均响应发生变化。如果 passthrough 设置为 0.0,则模型对训练集的平均响应不会改变。如果 passthrough 设置为 1.0,则单调化对平均响应进行的任何更改都将传递给 self.intercept_。0 到 1 之间的值将导致该百分比被传递。

返回:

模型本身。

predict(X, init_score=None)#

对提供的样本进行预测。

参数:
  • X – 样本的 NumPy 数组。

  • init_score – 可选。可以是能生成分数的模型,也可以是每个样本的初始化分数。如果是样本分数,其长度应与 X 相同。

返回:

每个样本的预测值。

predict_with_uncertainty(X, init_score=None)#

从 bagged 基模型获取原始得分和不确定性。通过对所有 bagged 模型的输出进行平均来生成预测,并使用跨 bag 预测的标准差来估计不确定性。

参数:
  • X – 形状为 (n_samples, n_features) 的 ndarray,用于预测的输入样本。

  • init_score – 可选。可以是能生成分数的模型,也可以是每个样本的初始化分数。如果是样本分数,其长度应与 X 相同。

返回:

形状为 (n_samples, 2) 的 ndarray

第一列包含平均预测 第二列包含不确定性

remove_features(features)#

从已拟合的 EBM 中移除特征(及其相关组件)。

请注意,这将改变 self 的以下组件的结构(即,通过移除指定的索引):histogram_edges_histogram_weights_unique_val_counts_bins_feature_names_in_feature_types_in_feature_bounds_。此外,任何使用被删除特征的项也将被删除。调用方传递给 __init__ 函数的以下属性未被修改:feature_namesfeature_types

参数:

features – 特征名称或索引或布尔值的列表或可枚举对象,指示要移除哪些特征。

返回:

模型本身。

remove_terms(terms)#

从已拟合的 EBM 中移除项(及其相关组件)。

请注意,这将改变 self 的以下组件的结构(即,通过移除指定的索引):term_features_term_names_term_scores_bagged_scores_standard_deviations_bin_weights_

参数:

terms – 项名称或索引或布尔值的列表(或其他可枚举对象)。

返回:

模型本身。

scale(term, factor)#

将单个项的贡献按常数因子缩放。

例如,您可以通过将特定项的相应权重设置为零来取消其贡献;这将导致相关的全局解释(例如变量重要性)也为零。有几点值得注意:1) 此方法对拟合的截距没有影响,用户必须直接更改该属性(如果需要),以及 2) 重新加权特定项的贡献也会以类似方式重新加权其相关组件(例如,变量重要性得分、标准差等)。

参数:
  • term – 要缩放的项的项索引或名称。

  • factor – 缩放项的因子量。

返回:

模型本身。

score(X, y, sample_weight=None)#

返回预测的决定系数。

决定系数 \(R^2\) 定义为 \((1 - \frac{u}{v})\),其中 \(u\) 是残差平方和 ((y_true - y_pred)** 2).sum(),而 \(v\) 是总平方和 ((y_true - y_true.mean()) ** 2).sum()。最佳可能得分为 1.0,它也可能为负(因为模型可能任意糟糕)。一个总是预测 y 期望值而忽略输入特征的常数模型将获得 0.0 的 \(R^2\) 分数。

参数:
  • X (形状为 (n_samples, n_features) 的类数组对象) – 测试样本。对于某些估计器,这可能是一个预计算的核矩阵或一个通用对象列表,其形状为 (n_samples, n_samples_fitted),其中 n_samples_fitted 是估计器拟合中使用的样本数。

  • y (形状为 (n_samples,) (n_samples, n_outputs) 的类数组对象) – X 的真实值。

  • sample_weight (形状为 (n_samples,) 的类数组对象, 默认值=None) – 样本权重。

返回:

scoreself.predict(X) 相对于 y\(R^2\) 分数。

返回类型:

float

注意

在对回归器调用 score 时使用的 \(R^2\) 分数从版本 0.23 开始使用 multioutput='uniform_average',以与 r2_score() 的默认值保持一致。这会影响所有多输出回归器的 score 方法(MultiOutputRegressor 除外)。

sweep(terms=True, bins=True, features=False)#

从已拟合的 EBM 中清除未使用的元素。

参数:
  • terms – 布尔值,指示是否应从模型中清除对输出没有影响的归零项。

  • bins – 布尔值,指示是否应从模型中清除对输出没有影响的未使用的分箱级别。

  • features – 布尔值,指示是否应从模型中清除在任何项中未使用因此不影响输出的特征。

返回:

模型本身。

term_importances(importance_type='avg_weight')#

提供项重要性。

参数:

importance_type – 请求的项重要性类型(‘avg_weight’,‘min_max’)。

返回:

一个项重要性数组,每个加性项有一个重要性值。

to_json(file, detail='all', indent=2)#

将模型导出到 JSON 文本文件。

参数:
  • file – 类路径对象 (str 或 os.PathLike),或实现了 .write() 方法的类文件对象。

  • detail – ‘minimal’(最小)、‘interpretable’(可解释)、‘mergeable’(可合并)、‘all’(全部)。

  • indent – 如果 indent 是非负整数或字符串,则 JSON 数组元素和对象成员将以该缩进级别进行美观打印。缩进级别为 0、负数或 “” 将只插入换行符。None(默认值)选择最紧凑的表示形式。使用正整数缩进将每层缩进相应数量的空格。如果 indent 是字符串(例如“t”),则该字符串用于缩进每个级别。

to_jsonable(detail='all')#

将模型转换为可 JSON 化表示。

参数:

detail – ‘minimal’(最小)、‘interpretable’(可解释)、‘mergeable’(可合并)、‘all’(全部)。

返回:

可 JSON 化对象