第二十一讲 XGBoost 回归建模 + SHAP 可解释性分析(利用R语言内置数据集)

发布于:2025-04-20 ⋅ 阅读:(105) ⋅ 点赞:(0)

下面我将使用 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 分析 计算贡献值并可视化