r语言 - 在使用tidymodels时,我如何取消缩放并理解glmnet系数?



我有点困惑,我应该如何解释我通过tidymodelsglmnet获得的弹性网络模型的系数。理想情况下,我希望生成未缩放系数以获得最大的可解释性。

我的问题是,老实说,我不确定如何取消模型产生的系数,因为我不能完全弄清楚首先正在做什么。

这是一个有点棘手的我张贴数据需要复制我的结果,但这里是我的代码:

library(tidymodels)
library(tidyverse)
# preps data for model
myrecipe <- mydata %>%
recipe(transactionrevenue ~ sessions + channelgrouping + month + new_user_pct + is_weekend) %>%
step_novel(all_nominal(), -all_outcomes()) %>%
step_dummy(month, channelgrouping, one_hot = TRUE) %>%
step_zv(all_predictors()) %>%
step_normalize(sessions, new_user_pct) %>%
step_interact(terms = ~ sessions:starts_with("channelgrouping") + new_user_pct:starts_with("channelgrouping"))

# creates the model
mymodel <- linear_reg(penalty = 10, mixture = 0.2) %>%
set_engine("glmnet", standardize = FALSE)
wf <- workflow() %>%
add_recipe(myrecipe)
model_fit <- wf %>%
add_model(mymodel) %>%
fit(data = mydata)

# posts coefficients
tidy(model_fit)

如果有帮助的话,这里有一些信息可能会有用:

我真正关注的变量是"sessions."模型中,会话系数为2543.094882,截距为1963.369782。惩罚也是10

会话的未缩放平均值为725.2884,标准差为1035.381

我似乎无法弄清楚系数的单位是什么,以及如何/是否有可能将系数取消到原始单位。

如有任何见解,不胜感激。

您可以在工作流的许多不同组件上使用tidy()。默认是tidy()模型但你也可以拿出食谱,甚至是食谱步骤。这就是你感兴趣的信息所在的地方。

library(tidymodels)
#> Registered S3 method overwritten by 'tune':
#>   method                   from   
#>   required_pkgs.model_spec parsnip
data(bivariate)
biv_rec <- 
recipe(Class ~ ., data = bivariate_train) %>%
step_BoxCox(all_predictors())%>%
step_normalize(all_predictors())
svm_spec <- svm_linear(mode = "classification")
biv_fit <- workflow(biv_rec, svm_spec) %>% fit(bivariate_train)
## tidy the *model*
tidy(biv_fit)
#> # A tibble: 3 × 2
#>   term  estimate
#>   <chr>    <dbl>
#> 1 A       -1.15 
#> 2 B        1.17 
#> 3 Bias     0.328
## tidy the *recipe*
extract_recipe(biv_fit) %>%
tidy()
#> # A tibble: 2 × 6
#>   number operation type      trained skip  id             
#>    <int> <chr>     <chr>     <lgl>   <lgl> <chr>          
#> 1      1 step      BoxCox    TRUE    FALSE BoxCox_ZRpI2   
#> 2      2 step      normalize TRUE    FALSE normalize_DGmtN
## tidy the *recipe step*
extract_recipe(biv_fit) %>%
tidy(number = 1)
#> # A tibble: 2 × 3
#>   terms  value id          
#>   <chr>  <dbl> <chr>       
#> 1 A     -0.857 BoxCox_ZRpI2
#> 2 B     -1.09  BoxCox_ZRpI2
## tidy the other *recipe step*
extract_recipe(biv_fit) %>%
tidy(number = 2)
#> # A tibble: 4 × 4
#>   terms statistic   value id             
#>   <chr> <chr>       <dbl> <chr>          
#> 1 A     mean      1.16    normalize_DGmtN
#> 2 B     mean      0.909   normalize_DGmtN
#> 3 A     sd        0.00105 normalize_DGmtN
#> 4 B     sd        0.00260 normalize_DGmtN

由reprex包(v2.0.0)在2021-08-05创建

你可以在这里阅读更多关于整理食谱的内容。

相关内容

  • 没有找到相关文章

最新更新