先看看示例
作者提供的示例,实际效果取决于你的输入和使用工具。
输入
已加载 tree_model;X_background 与 X_one 列相同,特征为 distance_km、queue_size、is_peak;输出单位是预计延迟分钟。
输出
编辑示例 · 未运行
import shap
explainer = shap.Explainer(tree_model, X_background)
explanation = explainer(X_one)
shap.plots.waterfall(explanation[0], show=False)
# 核对:base_values[0] + values[0].sum() 应接近该样本的模型输出。
# 图注:贡献相对于所选背景订单;特征作用不是调度措施的因果效果。方法说明
为已训练模型选择解释器与背景数据,分析整体和单次预测的特征贡献,并检查解释是否适用。 具体任务 解释某个预测为何偏高:选择与模型和输出语义匹配的 SHAP explainer,查看局部特征贡献。 比较全局与群组贡献:在明确背景样本的前提下汇总解释,检查不同群组的表现差异。 必需材料 已拟合模型及运行依赖 特征含义与待解释样本 解释目标是概率、原始分数还是其他输出 可选材料 代表性背景样本 群组字段和已有验证记录 使用门槛 模型本身已经过基本验证,输入列顺序可复现。 这个 Skill 额外提供的方法 先讲清解释的对象和基准,再提供图表,减少“贡献值是什么”的误读。 编辑示例(未运行) 解释一个订单的延迟评分 任务:给树模型回归预测写局部解释代码。 输入: 已加载 tree_model;X_background 与 X_one 列相同,特征为 distance_km、queue_size、is_peak;输出单位是预计延迟分钟。 结果片段: ```python import shap explainer = shap.Explainer(tree_model, X_background) explanation = explainer(X_one) shap.plots.waterfall(explanation[0], show=False) # 核对:base_values[0] + values[0].sum() 应接近该样本的模型输出。 # 图注:贡献相对于所选背景订单;特征作用不是调度措施的因果效果。 ``` 展示解释与加和核对方法,未伪造某个特征的贡献值。 此为编辑示例,未安装或运行上游 Skill。 首次任务 解释【模型】对【样本】的【输出含义】,使用【背景样本】;验收:输出空间说明清楚,特征顺序一致,加和核对通过并注明非因果。 必需材料:已拟合模型及运行依赖:【请填写或粘贴】;特征含义与待解释样本:【请填写或粘贴】;解释目标是概率、原始分数还是其他输出:【请填写或粘贴】 验收方法 背景样本是否代表解释要比较的基准 多输出模型是否选对类别或输出维度 贡献和基准的加和是否对应目标预测 依赖与准备 上游固定版要求 Python 3.12+、uv 与 SHAP 0.52.0;还需对应模型库,GPU 并非所有任务必需。 使用边界 SHAP 描述模型如何利用特征,不证明现实因果。 背景样本与输出空间改变会影响解释,敏感样本需在授权环境处理。 排错 waterfall 图报维度错误:检查多类别输出维度,先选定一个样本和一个目标类别。 同一个样本解释结果差异很大:固定模型、背景数据和 masker,并确认比较的是同一输出空间。 固定来源 https://github.com/K-Dense-AI/scientific-agent-skills/blob/065b734670d7d990627dbc06a05b5a99be33f1f1/skills/shap/SKILL.md