當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


R finetune tune_race_win_loss 通過帶有輸贏統計數據的比賽進行高效的網格搜索

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 參數設置初始重新采樣的數量。

當前一組重新采樣的性能統計數據將轉換為獲勝/失敗/平局結果。例如,對於分類模型中的兩個參數( jk ),每個參數均已重采樣三次:


            |  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
   ---------------------------------------------

第三次重新采樣後,參數 kj 的贏/輸比為 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.

# }

相關用法


注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Efficient grid search via racing with win/loss statistics。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。