finetune
finetune 1.2.0
finetune
包含一些用于模型调整的额外函数,这些函数扩展了tune
包中当前的功能。您可以使用以下代码安装 CRAN 版本的软件包:
install.packages( " finetune " )
要安装该包的开发版本,请运行:
# install.packages("pak")
pak :: pak( " tidymodels/finetune " )
软件包中有两套主要工具:模拟退火和竞赛。
通过模拟退火优化进行调整是一种迭代搜索工具,用于寻找好的值:
library( tidymodels )
library( finetune )
# Syntax very similar to `tune_grid()` or `tune_bayes()`:
# # -----------------------------------------------------------------------------
data( two_class_dat , package = " modeldata " )
set.seed( 1 )
rs <- bootstraps( two_class_dat , times = 10 ) # more resamples usually needed
# Optimize a regularized discriminant analysis model
library( discrim )
rda_spec <-
discrim_regularized( frac_common_cov = tune(), frac_identity = tune()) % > %
set_engine( " klaR " )
# # -----------------------------------------------------------------------------
set.seed( 2 )
sa_res <-
rda_spec % > %
tune_sim_anneal( Class ~ . , resamples = rs , iter = 20 , initial = 4 )
# > Optimizing roc_auc
# > Initial best: 0.86480
# > 1 ♥ new best roc_auc=0.87327 (+/-0.004592)
# > 2 ♥ new best roc_auc=0.87915 (+/-0.003864)
# > 3 ◯ accept suboptimal roc_auc=0.87029 (+/-0.004994)
# > 4 + better suboptimal roc_auc=0.87171 (+/-0.004717)
# > 5 ◯ accept suboptimal roc_auc=0.86944 (+/-0.005081)
# > 6 ◯ accept suboptimal roc_auc=0.86812 (+/-0.0052)
# > 7 ♥ new best roc_auc=0.88172 (+/-0.003647)
# > 8 ◯ accept suboptimal roc_auc=0.87678 (+/-0.004276)
# > 9 ◯ accept suboptimal roc_auc=0.8627 (+/-0.005784)
# > 10 + better suboptimal roc_auc=0.87003 (+/-0.005106)
# > 11 + better suboptimal roc_auc=0.87088 (+/-0.004962)
# > 12 ◯ accept suboptimal roc_auc=0.86803 (+/-0.005195)
# > 13 ◯ accept suboptimal roc_auc=0.85294 (+/-0.006498)
# > 14 ─ discard suboptimal roc_auc=0.84689 (+/-0.006867)
# > 15 ✖ restart from best roc_auc=0.85021 (+/-0.006623)
# > 16 ◯ accept suboptimal roc_auc=0.87607 (+/-0.004318)
# > 17 ◯ accept suboptimal roc_auc=0.87245 (+/-0.004799)
# > 18 + better suboptimal roc_auc=0.87706 (+/-0.004131)
# > 19 ◯ accept suboptimal roc_auc=0.87213 (+/-0.004791)
# > 20 ◯ accept suboptimal roc_auc=0.86218 (+/-0.005773)
show_best( sa_res , metric = " roc_auc " , n = 2 )
# > # A tibble: 2 × 9
# > frac_common_cov frac_identity .metric .estimator mean n std_err .config
# > <dbl> <dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
# > 1 0.308 0.0166 roc_auc binary 0.882 10 0.00365 Iter7
# > 2 0.121 0.0474 roc_auc binary 0.879 10 0.00386 Iter2
# > # ℹ 1 more variable: .iter <int>
第二组方法是针对赛车的。我们首先对所有网格点进行一小组重新采样,然后进行统计测试,看看哪些网格点应该被丢弃或进行更多调查。这里的两种方法基于 Kuhn (2014) 中的方法。
例如,使用 ANOVA 类型分析来过滤参数组合:
set.seed( 3 )
grid <-
rda_spec % > %
extract_parameter_set_dials() % > %
grid_max_entropy( size = 20 )
ctrl <- control_race( verbose_elim = TRUE )
set.seed( 4 )
grid_anova <-
rda_spec % > %
tune_race_anova( Class ~ . , resamples = rs , grid = grid , control = ctrl )
# > ℹ Evaluating against the initial 3 burn-in resamples.
# > ℹ Racing will maximize the roc_auc metric.
# > ℹ Resamples are analyzed in a random order.
# > ℹ Bootstrap10: 14 eliminated; 6 candidates remain.
# >
# > ℹ Bootstrap04: 2 eliminated; 4 candidates remain.
# >
# > ℹ Bootstrap03: All but one parameter combination were eliminated.
show_best( grid_anova , metric = " roc_auc " , n = 2 )
# > # A tibble: 1 × 8
# > frac_common_cov frac_identity .metric .estimator mean n std_err .config
# > <dbl> <dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
# > 1 0.831 0.0207 roc_auc binary 0.881 10 0.00386 Preproce…
也可以使用tune_race_win_loss()
。它将调整参数视为锦标赛中的运动队并计算输赢统计数据。
set.seed( 4 )
grid_win_loss <-
rda_spec % > %
tune_race_win_loss( Class ~ . , resamples = rs , grid = grid , control = ctrl )
# > ℹ Racing will maximize the roc_auc metric.
# > ℹ Resamples are analyzed in a random order.
# > ℹ Bootstrap10: 3 eliminated; 17 candidates remain.
# >
# > ℹ Bootstrap04: 2 eliminated; 15 candidates remain.
# >
# > ℹ Bootstrap03: 2 eliminated; 13 candidates remain.
# >
# > ℹ Bootstrap01: 1 eliminated; 12 candidates remain.
# >
# > ℹ Bootstrap07: 1 eliminated; 11 candidates remain.
# >
# > ℹ Bootstrap05: 1 eliminated; 10 candidates remain.
# >
# > ℹ Bootstrap08: 1 eliminated; 9 candidates remain.
show_best( grid_win_loss , metric = " roc_auc " , n = 2 )
# > # A tibble: 2 × 8
# > frac_common_cov frac_identity .metric .estimator mean n std_err .config
# > <dbl> <dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
# > 1 0.831 0.0207 roc_auc binary 0.881 10 0.00386 Preproce…
# > 2 0.119 0.0470 roc_auc binary 0.879 10 0.00387 Preproce…
该项目随贡献者行为准则一起发布。通过为该项目做出贡献,您同意遵守其条款。
有关 tidymodels 包、建模和机器学习的问题和讨论,请在 Posit 社区上发帖。
如果您认为遇到了错误,请提交问题。
无论哪种方式,学习如何创建和共享 reprex(一个最小的、可重现的示例),以清晰地传达您的代码。
查看有关 tidymodels 包贡献指南以及如何获取帮助的更多详细信息。