2016-09-05 4 views
1

maximize을 사용하여 xgboost에 초기 중지 기준이 악화되는 것을 어떻게 알릴 수 있습니까?조정할 수없는 매개 변수를 설정하면 xgboost에 대한 MLR에서 최대화 (early.stop.round와 함께)

library(mlbench) 
library(mlr) 
data(Sonar) 

trainTask1 <- makeClassifTask(data = Sonar,target = "Class",positive = "R") 

lrn = makeLearner("classif.xgboost", predict.type = "prob") 

ps = makeParamSet(
    makeDiscreteParam("nrounds", values =1000L,tunable = FALSE), 
    makeDiscreteParam("eta", values = c(0.01),tunable = FALSE), 
    makeIntegerParam("max_depth", lower=1,upper=5), 
    makeNumericParam("gamma", lower = 1, upper = 50), 
    makeNumericParam("colsample_bytree", lower=0.1,upper=0.9), 
    makeIntegerParam("min_child_weight", lower = 50, upper = 200), 
    makeDiscreteParam("print.every.n", values = 3,tunable = FALSE), 
    makeDiscreteParam("early.stop.round", values = 5L,tunable = FALSE), 
    makeLogicalParam("maximize", default = FALSE,tunable = FALSE) 
) 

ctrl = makeTuneControlIrace(maxExperiments = 200L, show.irace.output = TRUE) 
rdesc = makeResampleDesc("Holdout") 

res = tuneParams(lrn, task = trainTask1, resampling = rdesc, control = ctrl , par.set = ps,measures = logloss, show.info = TRUE) 

나는 다음과 같은 오류 얻을 : 내가 maximize=FALSE를 설정하는 생각

[Tune-x] 1: nrounds=1000; eta=0.01; max_depth=4; gamma=30.2; colsample_bytree=0.17; min_child_weight=193; print.every.n=3; early.stop.round=5; maximize=TRUE 
Error in xgb.train(params, dtrain, nrounds, watchlist, verbose = verbose, : 
    Please set maximize to note whether the model is maximizing the evaluation or not. 

이 최소화되어야한다 logloss 튜닝 알고리즘을 이야기하기에 충분 것을 나는 다음과 같은 예를보십시오. 그러나 나는 그것을 xgb.train에 전달할 수 없다. 라스 주석으로

R version 3.3.1 (2016-06-21) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows >= 8 x64 (build 9200) 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] mlr_2.9    stringi_1.1.1  ParamHelpers_1.8 ggplot2_2.1.0  BBmisc_1.10   
[6] mlbench_2.1-1  RevoUtilsMath_8.0.3 

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.5  magrittr_1.5  splines_3.3.1 munsell_0.4.3 lattice_0.20-33 xtable_1.8-2  
[7] colorspace_1.2-6 R6_2.1.2   stringr_1.0.0 plyr_1.8.3  dplyr_0.4.3  tools_3.3.1  
[13] parallel_3.3.1 grid_3.3.1  checkmate_1.8.1 data.table_1.9.6 gtable_0.2.0  DBI_0.4-1  
[19] htmltools_0.3.5 ggvis_0.4.2  xgboost_0.4-3 survival_2.39-4 assertthat_0.1 digest_0.6.9  
[25] irace_1.07  Matrix_1.2-6  shiny_0.13.2  mime_0.4   parallelMap_1.3 RevoUtils_10.0.1 
[31] scales_0.4.0  backports_1.0.2 httpuv_1.3.3  chron_2.3-47  
+0

흠, 학습자의 래퍼에서'maximize '를 직접 설정해도 작동하지 않는 것 같습니다. 아마도'xgboost' 버그일까요? 나는 그들이이 오류 메시지가 최근에 나온 코드를 변경했지만 새로운 버전이 아직 CRAN에없는 것 같아. –

+0

당신 말이 맞아요. git hub 문제를 발견했으며 작동하는 repo 버전이 있습니다. 그것을 가리켜 주셔서 감사합니다. – Richard

답변

0

:

내 세션 정보는 다음과이 알려진 문제가 될 것으로 보인다. 이것에 따라 issue on github drat repo 버전을 설치하면 해결할 수 있습니다.