Как точно настроить эту модель xgboost - PullRequest
0 голосов
/ 26 октября 2018

Как я могу точно настроить это, чтобы получить лучший прогноз?Я не знаю, как сделать его лучшей моделью.Любое понимание будет с благодарностью.Благодаря тонну.

В основном я имел в виду прогнозировать лучшую остроту зрения (BCVA 0,1 при зрении 0 = 20/20, 1 = хуже, чем 20/20).

Liyan

#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 голосов
/ 28 октября 2018

Существует несколько способов автоматической калибровки ваших гиперпараметров:

  1. scikit-learn GridSearch здесь и здесь

  2. Hyperopt, который я использую, здесь с хорошим примером здесь и краткий пример о том, как сделать это с xgboost

  3. Байесовская оптимизация с примером xgboost здесь

Все это техника поиска некоего «минимума» в определенном «пространстве», где это «пространство» определено"это" пространство поиска ", которое вы определите для своих параметров гиптера, а" минимум "- это ошибка модели, которую вы хотите уменьшить.

Тема довольно широкая, и вам есть что читать, или выможете просто следовать некоторым примерам и реализовать это в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...