【问题标题】:How to quickly and efficiently exclude a variables from a glm in R using Boruta output如何使用 Boruta 输出快速有效地从 R 中的 glm 中排除变量
【发布时间】:2021-02-13 19:54:03
【问题描述】:

我的数据框中有 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 输出中提取不重要的变量,以便同时排除许多变量?

有更好的方法吗?

我试图找到一种在线执行此操作的方法,但我只看到了排除一些变量的示例,就像我在第一个示例中所做的那样。

【问题讨论】:

    标签: r logistic-regression feature-selection


    【解决方案1】:

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

    注意:我无法测试上述方法,因为没有包含数据。

    【讨论】:

      猜你喜欢
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 2016-12-12
      相关资源
      最近更新 更多