Я тренирую xgboost, используя CARET, и мне нужно делать повторяющиеся результаты.
Итак, я рассчитываю вот так - я использую repeatcv (5 сгибов, 3 повторения), здесь 15 разбиений + 1 (создание окончательной модели), поэтому 16 разбиений.
Я настраиваю nrounds (500, 600, 700, 800), eta (0,05, 0,1) и max_depth (5,7,9).Для каждого разделения и комбинации гиперпараметров мне нужно одно семя, поэтому 15 * 4 (уникальные nrounds) * 2 (уникальные eta) * 3 (уникальные max_depth), плюс 3 семени для обучения финальной модели.
Это верно?стратегия?
set.seed(123)
seeds <- vector(mode = "list", length = 15)
for(i in 1:15) seeds[[i]] <- sample.int(24)
seeds[[16]] <- sample.int(1000, 3)
tunegrid <- tune_grid <- expand.grid(
nrounds = seq(from = 500, to = 800, by = 100),
eta = c(0.05, 0.1),
max_depth = c(5,7,9),
gamma = 0,
colsample_bytree = 0.6,
min_child_weight = 5,
subsample = 0.6
)
control <- trainControl(method='repeatedcv',
number=5,
seeds = seeds,
repeats=3,
search = 'random')
set.seed(101)
xgb_model <- train(target ~ .,
data = train_val,
method = 'xgbTree',
metric = 'MAE',
tuneGrid = tunegrid,
trControl = control)