R Ошибка проверки Xgboost как метрика остановки - PullRequest
0 голосов
/ 07 мая 2018

Я использую набор данных для обучения и проверки в бинарной классификационной модели xgboost.

params5 <- list(booster = "gbtree", objective = "binary:logistic", 
            eta=0.0001, gamma=0.5, max_depth=15, min_child_weight=1, subsample=0.6,
            colsample_bytree=0.4,seed =2222)


xgb_MOD5 <- xgb.train (params = params5, data = dtrain, nrounds = 4000,
                   watchlist = list(validation = dvalid,train = dtrain), 
                   print_every_n =30,early_stopping_rounds = 100
                  maximize = F ,serialize = TRUE)

Он автоматически выбирает ошибку поезда как метрику остановки. Это приводит к тому, что модель продолжает тренироваться при переоснащении.

Multiple eval metrics are present. Will use train_error for early stopping.
Will train until train_error hasn't improved in 100 rounds.

Как назначить ошибку проверки в качестве метрики остановки?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Спасибо @abhiieor за решение. Добавление к тому, что я наблюдал, когда мы используем только проверку в списке наблюдения:

xgb_MOD5 <- xgb.train (params = params5, data = dtrain, nrounds = 400,watchlist = list(validation = dvalid),
                   print_every_n =30,early_stopping_rounds = 100, maximize = F ,serialize = TRUE)

регистрировать результаты во время работы:

     [1]    validation-error:0.222037 
     Will train until validation_error hasn't improved in 100 rounds.

       [31] validation-error:0.201712 
       [61] validation-error:0.201635 

И если мы хотим видеть как ошибку поезда, так и ошибку проверки во время его выполнения,

добавление проверки в качестве второго аргумента в список наблюдения сделало это при использовании ошибки проверки в качестве метрики остановки .

xgb_MOD5 <- xgb.train (params = params5, data = dtrain, nrounds = 400,watchlist = list(train =dtrain,validation = dvalid),
                  print_every_n =30,early_stopping_rounds = 100, maximize = F ,serialize = TRUE)

       [1]  train-error:0.202131    validation-error:0.232341 
       Multiple eval metrics are present. Will use validation_error for early stopping.
      Will train until validation_error hasn't improved in 100 rounds.
       [31] train-error:0.174278    validation-error:0.202871 
       [61] train-error:0.173909    validation-error:0.202288 
0 голосов
/ 07 мая 2018

Я не использую привязку R к xgboost, и документация по R-пакету не является конкретной. Однако в документации python-API (см. Документацию аргумента early_stopping_rounds) есть соответствующее разъяснение по этому вопросу:

Требуется хотя бы один элемент в evals. Если их больше одного, будет использоваться последний.

Здесь evals - это список выборок, по которым будут оцениваться метрики, т. Е. Он аналогичен вашему аргументу watchlist. Так что, я думаю, может случиться так, что вам просто нужно поменять порядок элементов в списке, указанном в качестве аргумента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...