基于 R 中的 varimp 自动选择变量
Automate variable selection based on varimp in R
在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)的变量的名称,这样我就可以自动删除这些变量并重新运行模型。
我无法通过子集 'overall' 值
从 'calculatedVarImp' 变量中获取信息
lowVarImp <- subset(calculatedVarImp , importance$Overall <1)
另外,有没有更好的变量选择方法?
提前致谢
您正在使用 caret
包。不确定您是否知道这一点,但是 caret
有一种使用 Akaike 信息准则进行逐步逻辑回归的方法: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
这是尽可能自动化的,但可能值得阅读有关此方法缺点的答案:
在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)的变量的名称,这样我就可以自动删除这些变量并重新运行模型。
我无法通过子集 'overall' 值
从 'calculatedVarImp' 变量中获取信息lowVarImp <- subset(calculatedVarImp , importance$Overall <1)
另外,有没有更好的变量选择方法?
提前致谢
您正在使用 caret
包。不确定您是否知道这一点,但是 caret
有一种使用 Akaike 信息准则进行逐步逻辑回归的方法: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
这是尽可能自动化的,但可能值得阅读有关此方法缺点的答案: