0Pricing
Learn AI with Python · 课时

用于模型可解释性的 SHAP 值

shap.Explainer、TreeExplainer、力图、蜂群图和特征重要性排序。

用于模型可解释性的 SHAP 值 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

为什么需要可解释性

复杂模型通常很准确,却难以理解。可解释性回答了“模型为什么做出这个预测?”,这对于建立信任、调试和满足监管要求都至关重要。SHAP 是使用最广泛的解释方法之一。

SHAP 衡量什么

SHAP(SHapley 加性 exPlanations)会为单次预测中的每个特征分配一项贡献值。这些数值基于合作博弈论中的夏普利值:每个特征都是一名“参与者”,其 SHAP 值表示相对于基线而言,它应当公平承担的预测贡献。

可加性

SHAP 值具有可加性:基线值(模型输出的平均值)加上所有特征 SHAP 值之和,等于实际预测值。因此,每份解释都能完整且可审计地说明模型输出是如何得到的。

# prediction = base_value + sum(shap_values_for_each_feature)

TreeExplainer

对于树模型(XGBoost、LightGBM 和随机森林),shap.TreeExplainer 可以利用树结构快速计算精确的 SHAP 值。

import shap
import xgboost

model = xgboost.XGBClassifier().fit(X_train, y_train)
explainer = shap.TreeExplainer(model)

计算 shap_values

explainer.shap_values(X_test) 会返回一个矩阵:每行的每个特征都有一个 SHAP 值。这些就是您要进行可视化的原始贡献值。

shap_values = explainer.shap_values(X_test)
print(shap_values.shape)  # (n_samples, n_features)

summary_plot 蜂群图

shap.summary_plot 会生成蜂群图:每个点代表某个特征在一个样本中的取值。点的位置表示 SHAP 值(影响方向和影响程度),颜色表示特征值。特征会按照总体重要性排序。

shap.summary_plot(shap_values, X_test)

解读蜂群图

解读蜂群图时:

  • 顶部特征在总体上最重要
  • 最右侧的点会推高预测值;最左侧的点会压低预测值
  • 颜色可以揭示方向,例如,高特征值(红色)位于右侧,表示“较高的特征值会提高预测值”

解释单次预测

SHAP 在个体层面的解释中特别有用。要解释某一行数据,您需要该行的 SHAP 值和模型基线值。

idx = 0
base = explainer.expected_value
row_shap = shap_values[idx]

force_plot

shap.force_plot 会将一次预测显示为从基线值出发的各种推动力:红色特征会推高输出,蓝色特征会降低输出。所有影响合并后的结果就是最终预测值。

shap.force_plot(
    explainer.expected_value,
    shap_values[0],
    X_test.iloc[0],
)

waterfall_plot

shap.waterfall_plot 是最易读的单次预测视图。它从基线值开始,按照影响程度排序,逐步叠加每个特征的贡献,直到得到最终输出。

shap.waterfall_plot(
    shap.Explanation(
        values=shap_values[0],
        base_values=explainer.expected_value,
        data=X_test.iloc[0],
    )
)

总体解释与局部解释

SHAP 可以满足两种需求:

  • 总体解释:summary_plot 展示哪些特征总体上推动了模型的预测
  • 局部解释:force_plot 和 waterfall_plot 解释某一次具体预测

两者都来自同一组 SHAP 值,因此能在不同尺度上提供一致的解释。

快速检查

测试您对 SHAP 的理解。

回顾

您学会了使用 SHAP 解释模型:

  • shap.TreeExplainer(model) 可以为树模型计算精确值
  • explainer.shap_values(X_test) 会返回每个特征的贡献值
  • summary_plot 蜂群图展示总体重要性
  • force_plot 和 waterfall_plot 解释单次预测
  • SHAP 值具有可加性:基线值 + 贡献值 = 预测值

常见问题解答

「用于模型可解释性的 SHAP 值」课时是免费的吗?

是的 — 「用于模型可解释性的 SHAP 值」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「用于模型可解释性的 SHAP 值」这节课中我会学到什么?

shap.Explainer、TreeExplainer、力图、蜂群图和特征重要性排序。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「用于模型可解释性的 SHAP 值」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 检测机器学习模型中的偏见
  2. 用于模型可解释性的 SHAP 值
  3. LIME:局部可解释性说明
  4. 人工智能伦理与治理框架
← 返回 Learn AI with Python