第二十一讲 XGBoost 回归建模 + SHAP 可解释性分析(利用R语言内置数据集)
下面我将使用 R 语言内置的 mtcars
数据集,模拟一个完整的 XGBoost 回归建模 + SHAP 可解释性分析 实战流程。我们将以预测汽车的油耗(mpg)为目标变量,构建 XGBoost 模型,并用 SHAP 来解释模型输出。
🚗 示例:使用 XGBoost 和 SHAP 解释 mtcars
油耗预测模型
📦 步骤 1:加载所需 R 包
# 如果尚未安装,请取消注释以下行安装
# install.packages(c("xgboost", "SHAPforxgboost", "data.table", "ggplot2"))library(xgboost)
library(SHAPforxgboost)
library(data.table)
library(ggplot2)
🔍 步骤 2:准备数据
# 使用 mtcars 数据集
data(mtcars)# 将数据转换为 matrix 格式
data_matrix <- as.matrix(mtcars[, -1]) # 去除 mpg 列作为特征
labels <- mtcars$mpg # mpg 作为目标变量# 转为 xgboost DMatrix 格式
dtrain <- xgb.DMatrix(data = data_matrix, label = labels)
🧠 步骤 3:训练 XGBoost 回归模型
# 设置参数
params <- list(objective = "reg:squarederror", eval_metric = "rmse",eta = 0.1,max_depth = 3
)# 训练模型
xgb_model <- xgb.train(params = params,data = dtrain,nrounds = 100,verbose = 0
)
📊 步骤 4:SHAP 解释变量重要性
# 计算 SHAP 值
shap_values <- shap.values(xgb_model = xgb_model, X_train = data_matrix)
shap_long <- shap.prep(shap_contrib = shap_values$shap_score, X_train = data_matrix)# 可视化 SHAP 值
shap.plot.summary(shap_long)
这将绘制出各变量对预测油耗的贡献,颜色表示变量的取值大小,非常直观👇
🔥 SHAP 分析解读(示意)
-
wt(重量) 对 mpg 的负向影响最显著,越重油耗越高(mpg 越低)。
-
hp(马力) 也是一个重要负相关特征。
-
cyl(气缸数) 的影响次之。
✅ 小结
本示例中,我们用 mtcars
构建了一个 XGBoost 回归模型,并通过 SHAPforxgboost
包对模型进行可解释性分析:
步骤 | 内容 |
---|---|
数据准备 | 使用内置数据集并转换格式 |
模型训练 | 设置参数并训练 |
SHAP 分析 | 计算贡献值并可视化 |