{caret}xgbTree模型在包含权重时未运行,没有权重时运行良好
我有一个数据集,我可以用它构建一个没有权重的xgbTree模型,但是一旦我包含了权重——即使权重都是1——模型就不会收敛。我明白了 有点不对劲;缺少所有RMSE度量值:错误,当我打印警告时,我在nominalTrainWorkflow(x=x,y=y,wts=weights,info=trainInfo,…)中得到{caret}xgbTree模型在包含权重时未运行,没有权重时运行良好,r,xgboost,r-caret,R,Xgboost,R Caret,我有一个数据集,我可以用它构建一个没有权重的xgbTree模型,但是一旦我包含了权重——即使权重都是1——模型就不会收敛。我明白了 有点不对劲;缺少所有RMSE度量值:错误,当我打印警告时,我在nominalTrainWorkflow(x=x,y=y,wts=weights,info=trainInfo,…)中得到:在重新采样的性能度量中缺少值。作为最后一条消息 对于包含该信息的RData文件,该文件太大,无法打印,较小的样本并不总是重现该错误 它包含3个对象:input\u x、input\u
:在重新采样的性能度量中缺少值。
作为最后一条消息
对于包含该信息的RData文件,该文件太大,无法打印,较小的样本并不总是重现该错误
它包含3个对象:input\u x
、input\u y
和wts
——最后一个对象只是1的向量,但它最终应该能够接受间隔(0,1)上的数字,理想情况下。我使用的代码如下所示。请注意产生错误的weight参数旁边的注释
nrounds<-1000
tune_grid <- expand.grid(
nrounds = seq(from = 200, to = nrounds, by = 50),
eta = c(0.025, 0.05, 0.1, 0.3),
max_depth = c(2, 3, 4, 5),
gamma = 0,
colsample_bytree = 1,
min_child_weight = 1,
subsample = 1
)
tune_control <- caret::trainControl(
method = "cv",
number = 3,
verboseIter = FALSE,
allowParallel = TRUE
)
xgb_tune <- caret::train(
x = input_x,
y = input_y,
weights = wts, # If I remove this line, the code works fine. When included, even if just 1s, it throws an error.
trControl = tune_control,
tuneGrid = tune_grid,
method = "xgbTree",
verbose = TRUE
)
nrounds根据权重参数称为wts
行:
运行
xgb_tune <- caret::train(
x = input_x,
y = input_y,
wts = wts,
trControl = tune_control,
tuneGrid = tune_grid,
method = "xgbTree",
verbose = TRUE
)
xgb\u tune查看下面的解决方案是否适用于您。我运行了几圈您的代码,一切正常。没有在整个范围内尝试。可能还与并行有关
xgb_tune <- caret::train(
x = input_x,
y = input_y,
wts = wts,
trControl = tune_control,
tuneGrid = tune_grid,
method = "xgbTree",
verbose = TRUE
)