Ошибка при параллельной настройке модели xgboost в функции поезда кареты - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь выполнить настройку перекрестной проверки в карете для модели xgboost.У меня есть большая сетка настройки, поэтому я хотел бы запустить ее параллельно.Я настроил данные как разреженную матрицу, настроил сетку настройки, параллельную обработку, а затем попытался запустить train, однако каждый раз получаю ошибку соединения.Если я отключу параллельные параметры, он будет работать нормально.Это не мои данные, потому что и эти данные, и мои фактические данные имеют одну и ту же проблему.Что может быть причиной?Мне также любопытно, почему мне нужно определить метку y в функции train, когда xgb.Dmatrix dtrain уже имеет указатель на нее.

Пример данных в пакете DALEX, набор данных квартир.

library(caret)
library(xgboost)
library(Matrix)
library(DALEX) # get access to the sample data called "apartments"
library(doParallel)

x.train <- sparse.model.matrix(m2.price ~. -1 , data = apartments)
dtrain <- xgb.DMatrix(x.train, label = apartments$m2.price)

grid = expand.grid(
  nrounds = 500,
  eta = seq(.002,0.004,by = .002),
  max_depth = seq(2, 4, by = 2),
  gamma = 0, 
  colsample_bytree = 1,
  min_child_weight = seq(8, 10, by = 2),
  subsample = 0.5
)

# set cross validation
fitControl = trainControl(
  method = "cv",
  number = 5
)

# set up parallel processing
cl <- makeCluster(detectCores())
registerDoParallel(cl)
getDoParWorkers()


Tune = train(x = dtrain, y = apartments$m2.price,
             trControl = fitControl,
             tuneGrid = grid,
             method = "xgbTree",
             na.action = na.pass
)

Error in serialize(data, node$con) : error writing to connection
...