如何在workflow_map之后选择已调好的参数

egdjgwm8  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(128)

我已经使用{tidymodels}{workflow_set}成功地调优了几个模型。然而,当使用tune::last_fit()测试验证数据集时,tune::select_best获得的参数表现不佳。这使我想手动测试验证集上的其他参数集。我发现tune::show_best()tune::select_best()在这方面非常有限,因为它们在选择正确的参数时只考虑一个度量。我已经成功地用一个更复杂的逻辑过滤了tibles,这个逻辑涉及到使用纯{dplyr}的几个指标,但这不是最佳的,而且很耗时,每次我想测试一个模型时,都需要手动完成每个模型。
有没有一种方法可以根据workflow_id和cherry pick一组参数。配置数据的tibble?
如果tune::select_best()可以选择更多的条件来选择模型,这将非常有帮助。
这是获得“最佳”参数集的经典过程(不幸的是,这不是我的情况,因为我得到了一个具有非常高的roc_auc但非常糟糕的spec的模型)。

models_tuned <- models %>% 
  workflow_map("tune_bayes",
               resamples = cv_folds,
               initial = 20,
               iter= 10,
               metrics = mm_metrics,
               verbose = TRUE)

best_results <- models_tuned %>% 
  extract_workflow_set_result(id = "norm_nnet") %>% 
  select_best(metric = "accuracy")

fitted_workflow <- models_tuned %>%
  extract_workflow(id = "norm_nnet") %>%
  finalize_workflow(best_results) %>% 
  last_fit(split=split_df,
           metrics=mm_metrics)
nnt7mjpx

nnt7mjpx1#

here所示:
您可以将任何参数传递给finalize_workflow()parameters参数接受包含优化参数值的任何tibble。
还有其他select_*()函数和未发布的desirability2包可以使用。
例如,我得到了一个roc_auc很高但规格很差的模型
这听起来像是阶级不平衡。你可能会考虑使用成本敏感的学习方法或重新平衡(也许是themis)。

相关问题