下面我將使用 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 分析 | 計算貢獻值并可視化 |