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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。