paddlets.xai.post_hoc.shap_explainer

class ShapExplainer(model: Optional[Union[PaddleBaseModel, Pipeline]], background_data: TSDataset, background_sample_number: Union[None, int] = None, shap_method: str = 'kernel', task_type: str = 'regression', seed: int = 123, use_paddleloader: bool = False, **kwargs)[源代码]

基类:BaseExplainer

Shap解释器. 该类仅支持预测回归模型. 利用shap数值提供模型输入对输出的贡献度.对于shap, 可以看`https://github.com/slundberg/shap`.

参数
  • model (PaddleBaseModel|Pipeline) – 支持predict功能的模型对象

  • background_data (TSDataset) – 用于训练shap解释器的TSDataset数据

  • background_sample_number (int) – 从背景板数据中采样的样本实例数量

  • shap_method (str) – 使用的shap方法. 目前支持{‘kernel’, ‘deep’}.

  • task_type (str) – 模型任务类型. 目前仅支持回归任务

  • seed (int) – 随机数种子

  • use_paddleloader (bool) – 当模型为PaddleBaseModel类型的时候有效,可以加速效率

  • kwargs – 可选,额外参数对象传入shap_method对象

explain(foreground_data: TSDataset, nsamples: int = 100, sample_start_index: int = - 1, sample_num: int = 1, **kwargs) ndarray[源代码]

计算测试样本的解释性数值

参数
  • foreground_data (TSDataset) – 测试数据

  • nsamples (int) – 解释每个预测时重新评估模型的次数. 数据越大造成shap数值的评估方差越小. 仅当`shap_method=kernel`时有效. 默认值100

  • sample_start_index (int) – 测试样本的开始索引. 模型最后一个样本

  • sample_num (int) – 测试样本的数量,配合sample_start_index使用

  • kwargs – 可选, 额外参数传给`shap.explainer.shap_values`.

返回

np.ndarray对象. 输出形状: (out_chunk_len, 样本数目, in_chunk_len + out_chunk_len(known_cov部分), 特征数目)

get_explanation(out_chunk_index: int = 1, sample_index: int = 0) ndarray[源代码]

获取预测长度中特定时间点的解释性输出

参数
  • out_chunk_index (int) – 预测长度中特定时间点

  • sample_index (int) – 解释性数值样本索引. 默认第一个样本

返回

np.ndarray对象. 输出形状:(in_chunk_len + out_chunk_len, 特征数目)

plot(method: Optional[Union[str, List[str]]] = None, sample_index: int = 0, **kwargs) None[源代码]

展示不同维度的shap值. 例如’OI’(输出时间维度vs输入时间维度), ‘OV’(输出时间维度vs特征维度), ‘IV’(输入时间维度vs特征维度), ‘I’(输入时间维度), ‘V’(特征维度)

参数
  • method (str|List(str)) – 展示方法. 可选 {‘OI’, ‘OV’, ‘IV’, ‘I’, ‘V’}.

  • sample_index (int) – 解释性数值样本索引. 默认第一个样本

  • kwargs – 其他参数

返回

None

force_plot(out_chunk_indice: Optional[Union[int, List[int]]] = 1, sample_index: int = 0, **kwargs) None[源代码]

以加性图层的方式可视化shap数值

参数
  • out_chunk_indice (int) – 预测长度中特定时间点

  • sample_index (int) – 解释性数值样本索引. 默认第一个样本

  • kwargs – 可选, 额外的参数传给shap.force_plot.

返回

None

summary_plot(out_chunk_indice: Optional[Union[int, List[int]]] = 1, sample_index: int = 0, **kwargs) None[源代码]

基于解释性样本构建SHAP特征重要性图

参数
  • out_chunk_indice (int) – 预测长度中特定时间点

  • sample_index (int) – 解释性数值样本索引. 默认第一个样本

  • kwargs – 可选, 其他参数传给shap.summary_plot.

返回

None