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

如何在R中使用kernelshap与shapviz计算并绘制SHAP交互值?

在R中使用kernelshap和shapviz计算并可视化SHAP交互值

1. 安装并加载依赖包

首先安装所需R包:

install.packages(c("kernelshap", "shapviz", "xgboost", "dplyr"))

加载包:

library(kernelshap)
library(shapviz)
library(xgboost)
library(dplyr)

2. 准备数据并训练模型

以mtcars数据集为例,训练回归模型作为演示:

# 拆分特征与目标变量
data(mtcars)
X <- mtcars %>% select(-mpg)  # 特征矩阵
y <- mtcars$mpg               # 目标变量

# 训练XGBoost模型
dtrain <- xgb.DMatrix(data = as.matrix(X), label = y)
model <- xgb.train(
  data = dtrain,
  nrounds = 50,
  objective = "reg:squarederror",
  verbose = 0
)

3. 计算SHAP交互值

使用kernelshap函数,通过interactions = TRUE参数触发交互值计算:

# 计算SHAP交互值
shap_results <- kernelshap(
  model = model,
  X = X,
  interactions = TRUE,
  verbose = 0
)

返回的shap_results对象包含常规SHAP值,以及存储交互SHAP值的矩阵S_inter。

4. 可视化SHAP交互值

利用shapviz的内置函数完成两类可视化:

单个特征对的交互效果

指定两个特征,展示它们的交互对预测值的影响:

sv <- shapviz(shap_results)
sv_interaction(sv, feature1 = "wt", feature2 = "hp")

所有特征对的交互强度热图

直观展示所有特征间的交互强度:

sv_interaction_heatmap(sv)

补充说明

  • kernelshap兼容所有带有predict方法的模型(如随机森林、线性模型等),只需替换训练模型的代码即可。
  • sv_interaction图中,颜色代表其中一个特征的取值,点的位置与颜色共同呈现两个特征交互对SHAP值的影响逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:06:06