如何解读分类任务下SHAP的force_plot、expected_value及输出值含义
问题1:分类场景下生成的force_plot该如何解读?
多分类场景下,每张force_plot对应一个固定类别的预测概率贡献拆解:
- 横坐标的基准值为对应类别的
expected_value,所有特征的SHAP值叠加在基准值上,最终得到该样本对应类别的预测概率 - 红色色块代表推高当前类别预测概率的特征,色块长度越大,该特征对提升当前类别的预测概率作用越强
- 蓝色色块代表拉低当前类别预测概率的特征,色块长度越大,该特征对降低当前类别的预测概率作用越强
比如你提供的第一个测试样本,类别2的force_plot中,花瓣宽度、花瓣长度两个特征为红色且长度很长,说明这两个特征是模型判定该样本属于类别2的核心依据。
问题2:分类任务中expected_value的具体含义是什么?
expected_value是模型对训练集所有样本预测的各类别概率的平均值,是SHAP计算的基准:
- 你输出的
[0.32955357 0.30758929 0.36285714]分别对应类别0、类别1、类别2的基准预测概率,三个值相加约等于1,符合概率和为1的逻辑 - 可以理解为:不输入任何特征信息时,模型默认给出的各类别预测概率就是
expected_value对应的值
问题3:force_plot中的加粗数值代表什么含义?
分类场景下,加粗数值就是当前样本被模型预测为对应类别的概率,三个类别的加粗值相加和为1。该值的计算逻辑为:对应类别的expected_value + 该样本所有特征在对应类别下的SHAP值之和,和回归场景下加粗值为预测值的逻辑完全一致,只是回归的预测目标是连续值,分类的预测目标是类别概率。
补充说明:你代码中输出的shap_values维度为[类别数, 测试样本数, 特征数],每一层对应一个类别的所有样本各特征的SHAP值,符合多分类任务的输出规则。
内容的提问来源于stack exchange,提问作者lux7
相关产品推荐
相关产品推荐

