2

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

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

我看到了一些使用 LIME 的实现,但是 GBM 包与 LIME 不兼容,我正在努力实现它。有没有手动的方法来查看这个?

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

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

4

1 回答 1

1

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

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

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))

在此处输入图像描述

于 2020-03-12T10:17:45.157 回答