假设我有一个包含很多变量的数据集(比下面的可复制示例中的变量多),并且我想构建一个简单且可解释的模型,即 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
应该在简单模型中添加一些 2d 交互(例如 )。