2015-11-27 8 views
7

sto cercando di parametri sintonizzare utilizzando il pacchetto cursore in R ma ottenere unaparametri di sintonia XGboost In R

Error in train.default(x = as.matrix(df_train %>% select(-c(Response, : 
    The tuning parameter grid should have columns nrounds, lambda, alpha 

ogni volta che provo per addestrare il modello, anche se i nrounds colonne, lambda, e alfa sono lì .

library(caret) 
library(xgboost) 
library(readr) 
library(dplyr) 
library(tidyr) 

xgb_grid_1 <- expand.grid(
    nrounds= 2400, 
    eta=c(0.01,0.001,0.0001), 
    lambda = 1, 
    alpha =0 
) 

xgb_trcontrol <- trainControl(
    method="cv", 
    number = 5, 
    verboseIter = TRUE, 
    returnData=FALSE, 
    returnResamp = "all", 
    allowParallel = TRUE, 

) 

xgb_train_1 <- train(
    x = as.matrix(df_train %>% select(-c(Response, Id))), 
    y= df_train$Response, 
trControl = xgb_trcontrol, 
tuneGrid = xgb_grid_1, 
method="xgbLinear" 
) 
+0

Questa è già una risposta qui. Questa potrebbe essere una domanda doppia. http://stats.stackexchange.com/questions/171043/how-to-tune-hyperparameters-of-xgboost-trees –

risposta

6

Il problema si trova in xgb_grid_1. Se rimuovi la linea eta, funzionerà.

Le opzioni di sintonizzazione standard con xgboost e caret sono "nrounds", "lambda" e "alpha". Non eta. utilizzare la funzione modelLookup per vedere quali parametri del modello sono disponibili. Se vuoi usare anche eta, dovrai creare il tuo modello di caret per usare anche questo parametro extra nell'ottimizzazione.

modelLookup("xgbLinear") 
     model parameter     label forReg forClass probModel 
1 xgbLinear nrounds # Boosting Iterations TRUE  TRUE  TRUE 
2 xgbLinear lambda  L2 Regularization TRUE  TRUE  TRUE 
3 xgbLinear  alpha  L2 Regularization TRUE  TRUE  TRUE 
+0

Vale la pena notare che in xgboost il parametro eta è solo per aumentare gli alberi, quindi se il tuo metodo è 'xgbLinear' , non ci dovrebbe essere alcun parametro eta. – aginensky

Problemi correlati