До сих пор я построил много классификационных моделей, используя пакет "Caret". Эта библиотека позволяет мне находить лучшие параметры для XGBoost, используя expand.grid и пробуя все возможные комбинации некоторых параметров, как показано в примере ниже.
trControl = trainControl(
method = 'cv',
number = 3,
returnData=F,
classProbs = TRUE,
verboseIter = TRUE,
allowParallel = TRUE)
tuneGridXGB <- expand.grid(
nrounds=c(10, 50, 100, 200, 350, 500),
max_depth = c(2,4),
eta = c(0.005, 0.01, 0.05, 0.1),
gamma = c(0,2,4),
colsample_bytree = c(0.75),
subsample = c(0.50),
min_child_weight = c(0,2,4))
xgbmod_classif_bin <- train(
x=eg_Train_mat,
y= y_train_target,
method = "xgbTree",
metric = "auc",
reg_lambda=0.7,
scale_pos_weight=1.6,
nthread = 4,
trControl = trControl,
tuneGrid = tuneGridXGB,
verbose=T)
Впервые у меня возникла проблема с классификацией мультиклассов (с 9 классами), но я, похоже, не могу использовать что-то вроде "multi: softprob" (как я делал бы с пакетом xgboost - см. ниже).
param=list(objective="multi:softprob",
num_class=9,
eta=0.005,
max.depth=4,
min_child_weight=2,
gamma=6,
eval_metric ="merror",
nthread=4,
booster = "gbtree",
lambda=1.8,
subssample=0.8,
alpha=6,
colsample_bytree=0.5,
scale_pos_weight=1.6,
verbosity=3
)
bst=xgboost(params = param,
data = eg_Train_mat,
nrounds = 15)
Есть идеи, как попробовать много параметров, используя сетку, возможно, с помощью пакета caret, для задачи классификации мультикласса?
Спасибо