R-使用xgboost作为特征选择以及交互选择

时间:2019-05-01 19:41:05

标签: r xgboost feature-selection interaction variable-selection

比方说,我有一个包含很多变量的数据集(比下面的可复制示例更多),我想构建一个简单且可解释的模型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)应该在简单的模型中添加兴趣。

0 个答案:

没有答案