You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在tidymodels框架中用tune_grid调优多隐藏层MLP模型?

在tidymodels中使用brulee调优多隐藏层MLP的超参数

要同时调优MLP的隐藏层数、各层单元数以及正则化系数penalty,需要自定义超参数的搜索空间,具体步骤如下:

1. 定义超参数搜索范围

由于brulee的mlp()中hidden_units支持向量输入(对应多隐藏层),你可以通过两种方式定义搜索空间:

方式一:动态生成随机组合

通过parameters()函数指定规则,自动生成2层或3层、单元数在指定区间内的组合:

# 定义超参数空间
mlp_params <- parameters(
  hidden_units = tune(id = "hidden_units", 
                      # 随机生成2/3层,每层单元数在10-50之间
                      fn = function(x) sample(10:50, size = sample(2:3, 1), replace = TRUE)),
  penalty = penalty(range = c(-4, 0)) # 对应1e-4到1e0的正则化系数
)

方式二:手动指定候选组合

如果需要更可控的测试组合,直接列出所有要尝试的层数+单元数搭配:

# 手动生成2层和3层的候选组合
grid_candidates <- expand.grid(
  hidden_units = list(c(10,20), c(20,30), c(30,40), c(10,20,30), c(20,30,40), c(30,40,50)),
  penalty = 10^seq(-4, 0, length.out = 5)
)

2. 调整模型定义

将hidden_units和penalty都设为待调参数:

mlp_mod <- mlp(hidden_units = tune(), penalty = tune()) %>% 
  set_engine("brulee", importance = "permutation") %>% 
  set_mode("regression")

3. 创建工作流

结合预处理配方与模型:

mlp_wf <- workflow() %>% 
  add_recipe(Sac_recipe) %>% 
  add_model(mlp_mod)

4. 执行网格调优

用交叉验证配合tune_grid()完成调优:

# 设置10折分层交叉验证
set.seed(456)
folds <- vfold_cv(Sac_train, v = 10, strata = price)

# 执行调优(二选一:用动态参数空间或手动网格)
tune_results <- tune_grid(
  object = mlp_wf,
  resamples = folds,
  param_info = mlp_params, # 用动态空间时选这个
  # grid = grid_candidates, # 用手动网格时替换上面的param_info
  metrics = metric_set(rmse, rsq) # 指定回归任务的评估指标
)

5. 提取最优结果

查看并使用最优超参数组合:

# 查看排名前5的参数组合
show_best(tune_results, metric = "rmse")

# 获取最优参数
best_params <- select_best(tune_results, metric = "rmse")

# 拟合最终模型
final_wf <- mlp_wf %>% 
  finalize_workflow(best_params) %>% 
  fit(data = Sac_train)

# 在测试集评估效果
final_wf %>% 
  predict(Sac_test) %>% 
  bind_cols(Sac_test %>% select(price)) %>% 
  metrics(truth = price, estimate = .pred)

关键说明

  • 调优多隐藏层时,hidden_units的候选值必须是向量形式,每个向量对应一组“层数+各层单元数”的组合。
  • 手动生成网格的方式适合明确测试目标场景,动态生成则能覆盖更广泛的参数空间。

内容的提问来源于stack exchange,提问作者Yang Yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:26:08