如何微调此xgboost模型

时间:2018-10-25 21:09:17

标签: r xgboost

如何对此进行微调,以便获得更好的预测?我不知道 使其成为更好的模型。任何见识将不胜感激。谢谢 吨。

基本上,我的意思是预测最佳矫正视力(BCVA 0,1与 0 = 20/20视力,1 =比20/20差)。

李艳

#preparing data
library(xgboost)
train <- read_sas("Rtrain2.sas7bdat",NULL)
test <- read_sas("Rtest2.sas7bdat",NULL)
labels <- train$bcva01 
test_label <- test$bcva01

#outcome variable
drops <- c("bcva01")
x<-train[ , !(names(train) %in% drops)]
x_test<-test[ , !(names(test) %in% drops)]

new_tr <- model.matrix(~.+0,data = x) 
new_ts <- model.matrix(~.+0,data = x_test)

#preparing matrix 
dtrain <- xgb.DMatrix(data = new_tr,label = labels) 
dtest <- xgb.DMatrix(data = new_ts,label=test_label)


#parameters

?list
params <- list(booster = "gbtree", objective = "binary:logistic", eta=0.03, 
gamma=0, max_depth=6, 
           min_child_weight=1, subsample=1, colsample_bytree=1)


#Using the inbuilt xgb.cv function
xgbcv <- xgb.cv( params = params, data = dtrain, nrounds = 21, nfold = 5, 
showsd = T, stratified = T, print.every.n = 10, early.stop.round = 21, 
maximize = F)

min(xgbcv$test.error.mean) #inf

#first default - model training
xgb1 <- xgb.train (params = params, data = dtrain, nrounds = 21, watchlist = 
list(val=dtest,train=dtrain), 
               print.every.n = 10, early.stop.round = 21, maximize = F , 
eval_metric = "error")

#model prediction
xgbpred <- predict (xgb1,dtest)
cvAUC::AUC(predictions = xgbpred, labels = test[,"bcva01"]) #0.69 2018-10-25

1 个答案:

答案 0 :(得分:1)

有几种方法可以自动校准超级参数:

  1. scikit学习GridSearch herehere

  2. 我使用的
  3. Hyperopt,here带有一个很好的示例here和一个short example on how to do it with xgboost

  4. 使用xgboost示例here的贝叶斯优化

所有方法都是在定义的“空间”中找到某种“最小”的技术,其中定义的“空间”是您将为hypter参数定义的“搜索空间”,而“最小”是模型错误d想减少。

主题非常广泛,您需要阅读很多东西,或者您可以按照一些示例并在代码中实现它。