2015-11-27 17 views
7

Tôi cố gắng để các thông số điều chỉnh bằng cách sử dụng gói caret trong R nhưng có được mộtthông số chỉnh XGboost Trong R

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

bất cứ khi nào tôi cố gắng để đào tạo các mô hình, mặc dù các cột nrounds, lambda, và alpha đang có .

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

Điều này đã được trả lời tại đây. Đây có thể là một câu hỏi trùng lặp. http://stats.stackexchange.com/questions/171043/how-to-tune-hyperparameters-of-xgboost-trees –

Trả lời

6

Sự cố nằm trong xgb_grid_1 của bạn. Nếu bạn loại bỏ dòng eta nó sẽ làm việc.

Tùy chọn điều chỉnh chuẩn với xgboost và dấu mũ là "nrounds", "lambda" và "alpha". Không phải là eta. sử dụng chức năng modelLookup để xem các tham số mô hình nào có sẵn. Nếu bạn muốn sử dụng eta là tốt, bạn sẽ phải tạo ra mô hình caret của riêng bạn để sử dụng tham số thêm này trong điều chỉnh là tốt.

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

Đáng chú ý rằng trong xgboost tham số eta chỉ dành cho việc thúc đẩy cây, vì vậy nếu phương pháp của bạn là 'xgbLinear' , không nên có tham số eta. – aginensky

Các vấn đề liên quan