2017-02-18 5 views
0

Я использую xgb.train() в пакете xgboost R для соответствия модели классификации. Я пытаюсь выяснить, какая самая лучшая итерация, чтобы остановить дерево. Я устанавливаю early_stop_rounds = 6 и, наблюдая за каждой меткой итерации, я могу ясно видеть, что производительность auc на данных валидации достигает max и затем уменьшается. Однако модель не останавливается и продолжается до тех пор, пока не будет достигнут определенный уровень.xgboost R пакет early_stop_rounds не запускается

Вопрос 1: Является ли это лучшей моделью (для заданного параметра), определенной на итерации, когда эффективность проверки начинает уменьшаться?

Вопрос 2: Почему модель не останавливается, когда auc при проверке начинает уменьшаться?

Вопрос 3: Как максимизируется параметр = FALSE? Что остановит его, если установлено значение ЛОЖЬ? он должен быть FALSE, когда установлен параметр early_stop_round?

Вопрос 4: Как модель знает, какая из них - данные проверки в списке наблюдения? Я видел, как люди используют test =, eval =, validation1 = и т. Д.?

Спасибо!

param<-list(
    objective="binary:logistic", 
    booster="gbtree", 
    eta=0.02, #Control the learning rate 
    max.depth=3, #Maximum depth of the tree 
    subsample=0.8, #subsample ratio of the training instance 
    colsample_bytree=0.5 # subsample ratio of columns when constructing each  tree 
) 

watchlist<-list(train=mtrain,validation=mtest) 

sgb_model<-xgb.train(params=param, # this is the modeling parameter set  above 
       data = mtrain, 
       scale_pos_weight=1, 
       max_delta_step=1, 
       missing=NA, 
       nthread=2, 
       nrounds = 500, #total run 1500 rounds 
       verbose=2, 
       early_stop_rounds=6, #if performance not improving for 6 rounds, model iteration stops 
       watchlist=watchlist, 
       maximize=FALSE, 
       eval.metric="auc" #Maximize AUC to evaluate model 
       #metric_name = 'validation-auc' 
       ) 

ответ

0
  • Ответ 1: Нет, не лучшая, но достаточно хорошо от смещения дисперсионных точка зрения компромисса.
  • Ответ 2: Он работает, может быть, есть некоторые проблемы с вашим кодом. Не могли бы вы дать общий результат прогресса в поездках и тестовых наборах AUC на каждом этапе повышения, чтобы это доказать? Если вы на 100% уверены, что он не работает, вы можете отправить билет с ошибкой в ​​проект XGBoost git.
  • Ответ 3: Maximize=FALSE предназначен для пользовательской функции оптимизации (скажем, пользовательский тип merror). Вы всегда хотите максимизировать/увеличить AUC, так что Maximize=TRUE лучше для вас.
  • Ответ 4: Его основное положение основано. Сначала поезжай. Далее следует перейти к проверке/оценке.
Смежные вопросы