Автоматизировать выбор переменной на основе varimp в R - PullRequest
0 голосов
/ 13 мая 2019

В R у меня есть модель логистической регрессии следующим образом

train_control <- trainControl(method = "cv", number = 3)

logit_Model <- train(result~., data=df,
           trControl = train_control,
           method = "glm",
           family=binomial(link="logit"))

calculatedVarImp <- varImp(logit_Model, scale = FALSE)

Я использую несколько наборов данных, проходящих через один и тот же код, поэтому значение переменной для каждого набора данных изменяется. Есть ли способ получить имена переменных, которые меньше n (например, 1) по общей важности, чтобы я мог автоматизировать удаление этих переменных и повторно запустить модель.

Мне не удалось получить информацию из переменной 'selectedVarImp', указав значение 'total' * в подмножестве

lowVarImp <- subset(calculatedVarImp , importance$Overall <1)

Кроме того, есть ли лучший способ выбора переменных?

Заранее спасибо

1 Ответ

4 голосов
/ 13 мая 2019

Вы используете пакет caret. Не уверен, что вам известно об этом, но у caret есть метод пошаговой логистической регрессии с использованием информационного критерия Акаике: glmStepAIC.

Таким образом, он итеративно обучает модель для каждого подмножества предикторов и останавливается на модели с самым низким AIC.


train_control <- trainControl(method = "cv", number = 3)

logit_Model <- train(y~., data= train_data,
                     trControl = train_control,
                     method = "glmStepAIC",
                     family=binomial(link="logit"),
                     na.action = na.omit)

logit_Model$finalModel

Это настолько автоматизировано, насколько это возможно, но, возможно, стоит прочитать этот ответ о недостатках этого метода:

См. Также .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...