0

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

4

0 回答 0