tune_race_win_loss()
为一组预定义的调整参数计算一组性能指标(例如,准确性或 RMSE),这些参数对应于一次或多次数据重采样的模型或配方。在评估初始数量的重采样后,该过程消除了使用统计模型不太可能获得最佳结果的调整参数组合。对于调整参数的每个成对组合,计算赢/输统计数据,并使用逻辑回归模型来衡量每个组合总体获胜的可能性。
用法
tune_race_win_loss(object, ...)
# S3 method for model_spec
tune_race_win_loss(
object,
preprocessor,
resamples,
...,
param_info = NULL,
grid = 10,
metrics = NULL,
control = control_race()
)
# S3 method for workflow
tune_race_win_loss(
object,
resamples,
...,
param_info = NULL,
grid = 10,
metrics = NULL,
control = control_race()
)
参数
- object
-
parsnip
模型规范或workflows::workflow()
。 - ...
-
目前未使用。 Kuhn (2014) 说明了该方法的技术细节。
竞赛方法是网格搜索的有效方法。最初,该函数评估一小组初始重采样的所有调整参数。
control_race()
的burn_in
参数设置初始重新采样的数量。当前一组重新采样的性能统计数据将转换为获胜/失败/平局结果。例如,对于分类模型中的两个参数(
j
和k
),每个参数均已重采样三次:| area under the ROC curve | ----------------------------- resample | parameter j | parameter k | winner --------------------------------------------- 1 | 0.81 | 0.92 | k 2 | 0.95 | 0.94 | j 3 | 0.79 | 0.81 | k ---------------------------------------------
第三次重新采样后,参数
k
与j
的赢/输比为 2:1。对于每个设置,具有相同结果的参数将被视为half-win。这些统计数据是针对参数的所有成对组合确定的,并且使用 Bradley-Terry 模型对这些赢/输/平局统计数据进行建模。该模型可以计算参数组合赢得总体胜利的能力。计算获胜能力的置信区间,并且保留区间包含零的任何设置以供将来重新采样(因为它在统计上与最佳结果没有差异)。下一次重新采样将与剩余的参数组合一起使用,并更新统计分析。处理每个新的重采样时可以排除更多候选参数。
control_race()
函数包含应用于 Bradley-Terry 模型结果的显著性截止参数以及其他相关参数。 - preprocessor
-
使用
recipes::recipe()
创建的传统模型公式或配方。 - resamples
-
具有多次重采样的
rset()
对象(即不是验证集)。 - param_info
-
dials::parameters()
对象或NULL
。如果没有给出,则从其他参数派生参数集。当需要自定义参数范围时,传递此参数可能很有用。 - grid
-
调谐组合或正整数的 DataFrame 。 DataFrame 应具有用于调整每个参数的列和用于调整候选参数的行。整数表示要自动创建的候选参数集的数量。
- metrics
-
一个
yardstick::metric_set()
或NULL
。 - control
-
用于修改调整过程的对象。
值
具有主类 tune_race
的对象,其标准格式与 tune::tune_grid()
生成的对象相同。
参考
Kuhn, M 2014。“机器学习模型交叉验证中的无效性分析”。 https://arxiv.org/abs/1405.6974。
例子
# \donttest{
library(parsnip)
library(rsample)
library(dials)
## -----------------------------------------------------------------------------
if (rlang::is_installed(c("discrim", "modeldata"))) {
library(discrim)
data(two_class_dat, package = "modeldata")
set.seed(6376)
rs <- bootstraps(two_class_dat, times = 10)
## -----------------------------------------------------------------------------
# optimize an regularized discriminant analysis model
rda_spec <-
discrim_regularized(frac_common_cov = tune(), frac_identity = tune()) %>%
set_engine("klaR")
## -----------------------------------------------------------------------------
ctrl <- control_race(verbose_elim = TRUE)
set.seed(11)
grid_wl <-
rda_spec %>%
tune_race_win_loss(Class ~ ., resamples = rs, grid = 10, control = ctrl)
# Shows only the fully resampled parameters
show_best(grid_wl, metric = "roc_auc")
plot_race(grid_wl)
}
#> ℹ Racing will maximize the roc_auc metric.
#> ℹ Resamples are analyzed in a random order.
#> ℹ Bootstrap05: 1 eliminated; 9 candidates remain.
#> ℹ Bootstrap07: 1 eliminated; 8 candidates remain.
#> ℹ Bootstrap10: 1 eliminated; 7 candidates remain.
#> ℹ Bootstrap01: 1 eliminated; 6 candidates remain.
#> ℹ Bootstrap08: 1 eliminated; 5 candidates remain.
#> ℹ Bootstrap03: 1 eliminated; 4 candidates remain.
#> ℹ Bootstrap09: 1 eliminated; 3 candidates remain.
# }
相关用法
- R finetune tune_race_anova 通过方差分析模型进行高效网格搜索
- R finetune tune_sim_anneal 通过模拟退火优化模型参数
- R finetune control_race 网格搜索竞赛过程的控制方面
- R finetune control_sim_anneal 模拟退火搜索过程的控制方面
- R SparkR first用法及代码示例
- R SparkR fitted用法及代码示例
- R SparkR filter用法及代码示例
- R SparkR freqItems用法及代码示例
- R write.dbf 写入 DBF 文件
- R forcats fct_relevel 手动重新排序因子级别
- R forcats as_factor 将输入转换为因子
- R forcats fct_anon 匿名因子水平
- R write.foreign 编写文本文件和代码来读取它们
- R forcats fct_inorder 按首次出现、频率或数字顺序对因子水平重新排序
- R forcats fct_rev 因子水平的倒序
- R write.dta 以 Stata 二进制格式写入文件
- R forcats fct_match 测试因子中是否存在水平
- R forcats fct_relabel 使用函数重新标记因子水平,并根据需要折叠
- R S3 读取 S3 二进制或 data.dump 文件
- R forcats fct_drop 删除未使用的级别
- R forcats fct_c 连接因子,组合级别
- R forcats fct_collapse 将因子级别折叠为手动定义的组
- R read.ssd 通过 read.xport 从 SAS 永久数据集中获取数据帧
- R read.dbf 读取 DBF 文件
- R read.mtp 阅读 Minitab 便携式工作表
注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Efficient grid search via racing with win/loss statistics。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。