Как мне настроить это так, чтобы я мог лучше предсказывать? Я не знаю как чтобы сделать модель лучше. Мы будем благодарны за любое понимание. Спасибо тонна.
В основном я имел в виду предсказать остроту зрения с наилучшей коррекцией (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
Спасибо Конвас. Я попробую эти
Есть несколько способов автоматической калибровки гиперпараметров:
Hyperopt, который я использую, здесь с хорошим примером здесь и короткий пример того, как это сделать с xgboost
Все это техника нахождения некоего «минимума» в определенном «пространстве», где это определенное «пространство» - это «пространство поиска», которое вы определите для параметров вашего гиптера, а «минимум» - это ошибка модели, которую вы хотели бы исправить. уменьшать.
Тема довольно обширна, и вам есть что прочитать, или вы можете просто последовать нескольким примерам и реализовать это в своем коде.
Похоже, вам может потребоваться настроить некоторые параметры модели, такие как max_depth, min_child_weight и т. д.