r - 在插入符号的训练函数中并行调整 xgboost 模型时出错
问题描述
我正在尝试在插入符号中为 xgboost 模型运行一些交叉验证调整。我有一个很大的调整网格,所以我想并行运行它。我将数据设置为稀疏矩阵,设置调整网格,并行处理,然后尝试运行train
,但每次都收到连接错误。如果我禁用并行选项,它将运行得很好。这不是我的数据,因为这个样本数据和我的实际数据都有同样的问题。可能是什么原因造成的?我也很好奇为什么我需要在train
函数中定义 y 标签,而 xgb.Dmatrixdtrain
已经有一个指向它的指针。
示例数据位于 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
解决方案
推荐阅读
- javascript - 是否可以创建 Promise 类型的对象
> 在 JavaScript 中? - reactjs - 使用 useEffect 和 setState 更改状态后未重新呈现表数据
- javascript - 将 HTML 内容加载到 div 时,如何传递和检索一些数据?
- amazon-s3 - Outlook 阻止所有 Amazon S3 公共图像 URL
- java - 在 selenium 中一次处理 4 个窗口
- c# - .sprite 文件有标准格式吗?
- python - Python 错误仅适用于一组类似的事情?
- jquery - ajax get 调用不起作用?它显示错误不是找不到ajax调用
- c++ - 使用 static_assert 确保实现 CRTP 方法
- spock - 嵌入式 ActiveMQ Artemis 的 Micronaut spock 测试问题