Есть ли способ в R определить, какие уровни в пределах переменных наиболее важны в прогностической модели GBM? - PullRequest
2 голосов
/ 11 марта 2020

Я построил прогностическую модель с использованием пакета GBM в R. У меня хорошие результаты, и я могу видеть список важности функций, чтобы увидеть, какие переменные наиболее важны для модели. Я бьюсь над вопросом редактора, спрашивая направление переменных.

Например: переменная возраста: какая возрастная группа важнее, чем возраст в целом?
регион: который указывает c регион, а не регион как переменную в целом?

Я вижу некоторую реализацию этого с LIME, однако пакет GBM не совместим с LIME, и я изо всех сил пытаюсь реализовать его иначе. Есть ли ручной способ увидеть это?

Моя текущая идея запустить модель GBM по одному и сравнить результаты. Например, запустить с областью A и всеми остальными так же, затем с областью B, C, D, E, et c. Сравните окончательные результаты и посмотрите больше информации об уровне каждой переменной.

У кого-нибудь есть дополнительные советы или более быстрое решение? Спасибо

1 Ответ

1 голос
/ 12 марта 2020

Я полагаю, что вы используете 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))

enter image description here

...