插入符中带有search ='random'选项的tuneLength参数不起作用

时间:2019-05-02 12:58:08

标签: r machine-learning r-caret grid-search hyperparameters

我正在尝试使用随机网格搜索通过caret::train调整模型,但是在设置要使用的网格点数方面存在问题。

caret文档说要设置采样的随机网格点的数量,请使用tuneLength函数中的train参数,但是从试验中我似乎认为火车始终对所有网格点执行操作,而与tuneLength的值无关。 事实上,其结果与进行完全扫描搜索完全相同。

以下是一个工作示例。

使用Class目标2因子列创建综合数据集。

require(caret)
require(xgboost)

set.seed(1234)
dt <- twoClassSim(n = 1000)

xgboost模型调整构建网格

grid <- expand.grid(
  nrounds = seq(10, 100, by = 10),
  max_depth = c(1, 5, 10),
  gamma = c(0, 1, 2),
  eta = .01,
  subsample = 1,
  colsample_bytree = 1,
  min_child_weight = 1
)

这是一个90点网格。

设置交叉验证重采样并放置随机网格搜索选项

tc <- trainControl(
  method = 'cv',
  number = 5,
  search = 'random'
)

然后使用tuneLength选项等于2的模型进行拟合。

fit <- train(x = dt[, setdiff(names(dt),'Class')], y = dt$Class,
             method = 'xgbTree',
             trControl = tc,
             tuneGrid = grid, tuneLength = 2)

我希望仅获得2个网格点评估结果,但是我得到了90个网格点评估,即,对所有网格点进行了调整,就像对整个网格进行扫描一样。< / p>

这不是xgboost的问题,因为同一件事发生了,例如svmRadial

0 个答案:

没有答案