如何使用 Boruta 输出快速有效地从 R 中的 glm 中排除变量
How to quickly and efficiently exclude a variables from a glm in R using Boruta output
我的数据框中有 96 个变量。我想用 Boruta()
函数发现的重要变量来拟合逻辑回归。如果只有少数不重要的变量,那么这样做很容易:
glm <- glm(class ~ . - X1 - X2 - X3, data = df, family = binomial)
但是,如果我有 40 个不重要的变量,这就变得不可行了。我想知道如何提取 R 中所有不重要变量的名称,以及是否可以这样做:
glm <- glm(class ~ . -unimportant, data = df, family = binomial)
其中 unimportant 是不重要变量的向量。我尝试像这样提取这些不重要的变量:
unimportant <- boruta_output$finalDecision[boruta_output$finalDecision == "Rejected"]
但这给了我一个具有三个级别的因素。
我的问题是:
我可以使用向量从模型中排除变量吗?如果是这样,我怎样才能以可以同时排除许多变量的方式从 boruta 输出中提取不重要的变量?
有更好的方法吗?
我试图找到一种在线执行此操作的方法,但我只看到了排除一些变量的示例,就像我在第一个示例中所做的那样。
Boruta::Boruta
中有很多示例,其中一个示例显示了如何在使用 Boruto
算法提取参数后拟合 randomForest
。示例如下:
library(mlbench); data(Ozone)
library(randomForest)
na.omit(Ozone)->ozo
Boruta(V4~.,data=ozo,doTrace=2)->Bor.ozo
cat('Random forest run on all attributes:\n')
print(randomForest(V4~.,data=ozo))
cat('Random forest run only on confirmed attributes:\n')
print(randomForest(ozo[,getSelectedAttributes(Bor.ozo)],ozo$V4))
与其提取应该排除的变量,不如继续这个例子,根据算法提取应该包含的变量:
glm(class ~ ., data = df[, c('class', getSelectedAttributes(boruto_output))])
注意:上面的方法我没法测试,因为里面没有数据。
我的数据框中有 96 个变量。我想用 Boruta()
函数发现的重要变量来拟合逻辑回归。如果只有少数不重要的变量,那么这样做很容易:
glm <- glm(class ~ . - X1 - X2 - X3, data = df, family = binomial)
但是,如果我有 40 个不重要的变量,这就变得不可行了。我想知道如何提取 R 中所有不重要变量的名称,以及是否可以这样做:
glm <- glm(class ~ . -unimportant, data = df, family = binomial)
其中 unimportant 是不重要变量的向量。我尝试像这样提取这些不重要的变量:
unimportant <- boruta_output$finalDecision[boruta_output$finalDecision == "Rejected"]
但这给了我一个具有三个级别的因素。
我的问题是:
我可以使用向量从模型中排除变量吗?如果是这样,我怎样才能以可以同时排除许多变量的方式从 boruta 输出中提取不重要的变量?
有更好的方法吗?
我试图找到一种在线执行此操作的方法,但我只看到了排除一些变量的示例,就像我在第一个示例中所做的那样。
Boruta::Boruta
中有很多示例,其中一个示例显示了如何在使用 Boruto
算法提取参数后拟合 randomForest
。示例如下:
library(mlbench); data(Ozone)
library(randomForest)
na.omit(Ozone)->ozo
Boruta(V4~.,data=ozo,doTrace=2)->Bor.ozo
cat('Random forest run on all attributes:\n')
print(randomForest(V4~.,data=ozo))
cat('Random forest run only on confirmed attributes:\n')
print(randomForest(ozo[,getSelectedAttributes(Bor.ozo)],ozo$V4))
与其提取应该排除的变量,不如继续这个例子,根据算法提取应该包含的变量:
glm(class ~ ., data = df[, c('class', getSelectedAttributes(boruto_output))])
注意:上面的方法我没法测试,因为里面没有数据。