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)[源代码]
基类:
BaseExplainerShap解释器. 该类仅支持预测回归模型. 利用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