繁体   English   中英

R 中有没有办法确定变量中的哪些水平在 GBM 预测模型中最重要?

[英]Is there a way in R to determine which levels within the variables are most important in the GBM predictive model?

我使用 R 中的 GBM 包构建了一个预测模型。我得到了很好的结果,并且我能够查看特征重要性列表以查看哪些变量对模型最重要。 我正在努力解决编辑器询问变量方向的问题。

例如:年龄变量:哪个年龄组最重要,而不是整体年龄?
region:哪个具体的区域,而不是作为整体的区域变量?

我在 LIME 中看到了一些实现,但是 GBM 包与 LIME 不兼容,我正在努力以其他方式实现它。 有没有手动方法可以看到这个?

我目前的想法是一一运行 GBM 模型并比较结果。 例如,在区域 A 和所有其他区域相同的情况下运行,然后区域 B、C、D、E 等。比较最终结果并查看有关每个变量水平的更多信息。

有没有人有进一步的建议或更快的解决方案? 谢谢

我想您使用的是 gbm 而不是 xgboost,但无论如何您始终可以将数据转换为必要的格式。

您可以尝试使用 onehot 编码,这比一个一个测试变量好一点,因为模型暴露于所有变量。 下面不是一个很好的例子,因为我分割了一个连续变量,但希望在你的模型中分类更有意义:

library(MASS)
library(gbm)
library(highcharter)

data = Pima.te
age_cat = cut(data$age,4,labels = paste0("age",1:4))
onehot_bp = model.matrix(~0+age_cat)
data$type = as.numeric(data$type)-1
fit = gbm(type ~ .,data=cbind(data[,-grep("age",colnames(data))],onehot_bp))

res = summary(fit,plotit=FALSE)

hchart(res,"bar",hcaes(x=var,y=rel.inf,color=rel.inf))

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM