【问题标题】:Variable selection methods变量选择方法
【发布时间】:2014-05-07 07:33:26
【问题描述】:

我一直在为建模问题进行变量选择。

我使用反复试验进行选择(添加/删除变量),减少了错误。然而,随着变量数量增长到数百个,我面临着挑战,因为模型需要 1/2 小时来计算,因此无法执行手动变量选择,从而使任务变得不可能。

您是否碰巧知道除了 jumps 包中的 regsubsets 之外的任何其他包(当使用相同的试验和错误变量进行测试时会产生更高的错误,它不包括一些线性相关的变量 - 不包括一些有价值的变量)。

【问题讨论】:

    标签: r


    【解决方案1】:

    您需要一种更好(即没有缺陷)的模型选择方法。有很多选择,但应该很容易适应您的情况的一种选择是使用某种形式的正则化,例如 Lasso 或弹性网络。这些将收缩应用于系数的大小;如果系数从其最小二乘解缩小到零,则该变量将从模型中删除。生成的模型系数略有偏差,但它们的方差低于选定的 OLS 项。

    查看 larsglmnetpenalized 软件包

    【讨论】:

    • 非常感谢 给 lars 似乎是比常规回归方法更好的变量选择方法
    【解决方案2】:

    尝试使用 MASS 包的stepAIC 函数。

    这是一个非常简单的例子:

    library(MASS)
    data(swiss)
    str(swiss)
    
    lm <- lm(Fertility ~ ., data = swiss)
    lm$coefficients
    ## (Intercept)      Agriculture      Examination        Education         Catholic 
    ## 66.9151817       -0.1721140       -0.2580082       -0.8709401        0.1041153 
    ## Infant.Mortality 
    ## 1.0770481
    
    st1 <- stepAIC(lm, direction = "both")
    st2 <- stepAIC(lm, direction = "forward")
    st3 <- stepAIC(lm, direction = "backward")
    
    summary(st1)
    summary(st2)
    summary(st3)
    

    您应该尝试 3 个方向并检查哪种模型更适合您的测试数据。 阅读 ?stepAIC 并查看示例。

    编辑

    真正的逐步回归并不是最好的方法。正如 GavinSimpson 回答中提到的那样,套索回归是一种更好/更有效的方法。它比逐步回归快得多,并且适用于大型数据集。 查看 glmnet 包小插图: http://www.stanford.edu/~hastie/glmnet/glmnet_alpha.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      相关资源
      最近更新 更多