You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SHAP值整体解释高概率预测集合的特征重要性?

分析分类器在高概率预测样本中的特征重要性

背景信息

我在训练数据上拟合了一个分类器,测试最优模型时,预测了其中一类的概率,并将X_test和y_test按该概率降序排列。

核心问题

我想了解分类器在生成概率最高的500个预测结果时,哪些特征起到重要作用及作用程度(而非针对单个预测)。请问以下代码是否适用于此需求?

y_test_probas = clf.predict_proba(X_test)[:, 1]

explainer = shap.Explainer(clf, X_train)  # <-- 这里传入分类器训练时用的X?

top_n_indices = np.argsort(y_test_probas)[-500:]

shap_values = explainer(X_test.iloc[top_n_indices])  # <-- 这里传入我需要计算SHAP值的X?

shap.plots.bar(shap_values)

我的需求和SHAP官方文档示例有两点不同:

  • 文档用分类器训练数据,我想用测试数据
  • 文档用全部数据集,我只想用数据集的子集

最小可复现代码

import numpy as np
import pandas as pd
import shap
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# 加载泰坦尼克号生存数据集
data = pd.read_csv("https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv")

# 数据预处理
data = data.drop(["Name"], axis=1)
data = data.dropna()
data["Sex"] = (data["Sex"] == "male").astype(int)

# 划分特征(X)和目标变量(y)
X = data.drop("Survived", axis=1)
y = data["Survived"]

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 拟合随机森林分类器
clf = RandomForestClassifier().fit(X_train, y_train)

# 获取正类的预测概率
y_test_probas = clf.predict_proba(X_test)[:, 1]

# 筛选出预测概率最高的500个测试样本的索引
top_n_indices = np.argsort(y_test_probas)[-500:]

# 用分类器和训练集初始化SHAP解释器
explainer = shap.Explainer(clf, X_train)

# 计算top500样本的SHAP值
shap_values = explainer(X_test.iloc[top_n_indices, :])

# 绘制SHAP条形图
shap.plots.bar(shap_values)

我不想了解分类器对所有预测的决策逻辑,只想关注概率最高的预测结果。请问上述代码是否适用?若不适用,正确代码应如何编写?


解答

你的代码完全适用于你的需求,原因如下:

  1. SHAP解释器初始化逻辑:用X_train初始化shap.Explainer是正确的——SHAP需要训练数据作为"背景分布",用来对比解释样本的特征影响,这和你之后用测试子集计算SHAP值并不冲突。
  2. 子集计算SHAP值:针对筛选出的top500高概率测试样本计算SHAP值,再用shap.plots.bar()绘制,这个条形图会自动汇总这500个样本的特征SHAP值绝对值的均值,正好能反映这些样本中各特征的平均重要程度,完全符合你"关注高概率预测结果的特征作用"的需求。

唯一需要注意的细节:如果你的top500样本数量超过了测试集总样本数(比如泰坦尼克号测试集可能不足500),代码会自动取所有测试样本,这时候可以根据实际数据调整-500:为合理的数量,比如-len(X_test):或者更小的数值。


内容的提问来源于stack exchange,提问作者DataJanitor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:00:53