比方说,我有一个包含很多变量的数据集(比下面的可复制示例更多),我想构建一个简单且可解释的模型GLM。
我可以首先使用 xgboost 模型,并查看变量的重要性(取决于连续决策树中每个变量的频率和增益),选择10个最有影响力的变量:
问题:是否可以突出显示最重要的二维交互?
library(dplyr)
library(xgboost)
# data
data(mtcars)
dtrain <- xgb.DMatrix(
data = mtcars %>% select(-am) %>% as.matrix(),
label = mtcars$am
)
# xgboost parameters
xgb_params <- list(
objective = "binary:logistic",
eta = 0.1,
max_depth = 2
)
# xgboost fit
xgb_mod <- xgb.train(
data = dtrain,
params = xgb_params,
nrounds = 10,
eval = "auc",
maximize = TRUE
)
# feature importance
xgb.importance(dimnames(dtrain)[[2]], model = xgb_mod)
# Feature Gain Cover Frequency
# 1: wt 0.53965838 0.46589322 0.47619048
# 2: gear 0.41691383 0.37360220 0.28571429
# 3: qsec 0.03215627 0.11810252 0.19047619
# 4: hp 0.01127152 0.04240205 0.04761905
问题:根据xgboost模型,有没有办法突出最重要的交互作用?
根据功能的重要性,我可以构建一个具有4个变量(wt
,gear
,qsec
,hp
)的GLM,但我想知道是否有些二维互动(例如wt:hp
)应该在简单的模型中添加兴趣。