h2o.gbm () прекращает обучение, когда достигается заданное значение c AU C (или logloss et c), а не когда достигается изменение - PullRequest
0 голосов
/ 18 января 2020

В h2o.gbm() можно использовать stopping_rounds, чтобы прекратить обучение, когда происходит улучшение в stopping_metric; Тем не менее, я бы хотел, чтобы обучение прекратилось при достижении определенного порога, независимо от улучшения.

Например, (взято из https://github.com/h2oai/h2o-3/blob/master/h2o-docs/src/product/tutorials/gbm/gbmTuning.Rmd)

library(h2o)
h2o.init(nthreads = 1)
df <- h2o.importFile(path = "http://s3.amazonaws.com/h2o-public-test-data/smalldata/gbm_test/titanic.csv")
## pick a response for the supervised problem
response <- "survived"
## the response variable is an integer, we will turn it into a categorical/factor for binary classification
df[[response]] <- as.factor(df[[response]])           
## use all other columns (except for the name) as predictors
predictors <- setdiff(names(df), c(response, "name")) 

splits <- h2o.splitFrame(
  data = df, 
  ratios = c(0.6,0.2),   ## only need to specify 2 fractions, the 3rd is implied
  destination_frames = c("train.hex", "valid.hex", "test.hex"), seed = 1234
)
train <- splits[[1]]
valid <- splits[[2]]
test  <- splits[[3]]

Предположим, мне нужен только AU C из 90% (или у меня есть модель что уже достигло 90%). Как я могу использовать аргументы stopping_, чтобы прекратить обучение, когда AU C (из набора проверки) превышает 90%? Кажется, я могу остановиться только на улучшении.

gbm_a <- h2o.gbm(x = predictors, y = response, training_frame = train)

h2o.auc(h2o.performance(gbm_a, newdata = valid)) 
#> 0.9480135
...