【发布时间】:2021-02-09 10:52:53
【问题描述】:
我最近一直在使用 tidymodels 来运行模型并选择最能满足某些目标函数的参数。例如对 mtcars 数据使用假设回归 (using the regression examples from the bottom answer of this question as an example)
library(tidymodels)
library(tidyverse)
#some regression model
cars_recipe <- recipe(mpg ~ disp + drat, data = mtcars)
wf <- workflow() %>%
add_recipe(cars_recipe)
(大致使用this blog post 中的语法进行比较;在此示例中,为了清楚起见,我没有执行诸如拆分测试/训练之类的各种步骤)
然后我可以运行许多模型并从这些模型中获取指标(在这种情况下是针对某些弹性网络的各种惩罚)
#run over a parameter space and find metrics as an objective
mtcars_bootstrap <- bootstraps(mtcars)
tune_spec <- linear_reg(penalty = tune(), mixture = 1) %>%
set_engine("glmnet")
lambda_grid <- grid_regular(penalty(), levels = 50)
lasso_grid <- tune_grid(
wf %>% add_model(tune_spec),
resamples = mtcars_bootstrap,
grid = lambda_grid
)
但是可以说我有充分的理由认为有两个单独的模型可以最好地捕捉到(例如)汽车 mpg 的影响,所以我创建了第二个模型作为配方
cars_recipe2 <- recipe(mpg ~ I(disp + drat), data = mtcars)
现在我也可以使用 lapply 或 purrr 系列函数通过上述管道运行此配方,但是,我想知道是否有一些内置方法可以通过 tidymodels 运行多个配方?
似乎应该有,但我也认为它可能被设计排除以防止 p-hacking
【问题讨论】:
标签: r regression tidymodels