【问题标题】:Are the variable coefficients in original scale from glmnet model trained using caret in r是否使用 r 中的插入符号训练了 glmnet 模型中原始尺度的变量系数
【发布时间】:2020-07-09 15:55:10
【问题描述】:

我使用 caret 包来训练 glmnet 模型。我标准化了预测变量。似乎 glmnet 自动为我标准化了预测变量。所以无论我是否使用 preProcess 都不会影响我的结果。

library(caret)
fit<- caret::train (price~carat+depth+cut,
              data=diamonds[1:200,],
              method= 'glmnet',
              preProcess=c('center', 'scale'),
                metric = "Rsquared")

我需要知道预测变量对我的目标变量的影响。我可以从下面的代码中获取变量系数。

coef(fit$finalModel, fit$bestTune$lambda)

我的问题是:这些变量系数是原始比例还是标准化比例的输出? 谢谢。

【问题讨论】:

    标签: r r-caret glmnet


    【解决方案1】:

    变量系数在原始尺度。您可以查看它们,如果将它们呈现给按比例缩放的预测器,则不太可能看到 1 个系数为 1000+(意味着您必须增加 1000* sd !!),而另一个则为 -17。

    coef(fit$finalModel, fit$bestTune$lambda)
    7 x 1 sparse Matrix of class "dgCMatrix"
                         1
    (Intercept) 1717.36000
    carat       1092.16045
    depth        -17.86985
    cut.L         51.31784
    cut.Q          .      
    cut.C          .      
    cut^4          .   
    

    确定的一种方法是检查拟合值:

    preProcValues <- preProcess(diamonds[1:200,], method = c("center", "scale"))
    
    pred_scaled = predict(fit,predict(preProcValues,diamonds[1:200,]))
    identical(pred_scaled,fitted(fit))
    [1] FALSE
    pred_orig = predict(fit,diamonds[1:200,])
    identical(pred_orig,fitted(fit))
    [1] TRUE
    

    【讨论】:

      猜你喜欢
      • 2018-05-28
      • 2015-12-30
      • 2019-10-01
      • 2015-08-10
      • 1970-01-01
      • 2017-06-07
      • 2015-11-01
      • 2015-11-14
      • 2012-01-16
      相关资源
      最近更新 更多