R 如何在插入符号包中的指定网格中进行随机搜索?
我想知道是否可以在预定义的网格中使用随机搜索。例如,对于R 如何在插入符号包中的指定网格中进行随机搜索?,r,regression,r-caret,training-data,hyperparameters,R,Regression,R Caret,Training Data,Hyperparameters,我想知道是否可以在预定义的网格中使用随机搜索。例如,对于glmnet方法,我的网格具有alpha和lambdaalpha介于0和1之间,lambda介于-10和10之间。我想使用随机搜索5次,随机尝试在这个界限点。我为网格搜索编写了下面的代码,它工作得很好,但是我不能在绑定中修改它以进行随机搜索 rand_ctrl <- trainControl(method = "repeatedcv", repeats = 5, search = "
glmnet
方法,我的网格具有alpha
和lambda
alpha
介于0和1之间,lambda
介于-10和10之间。我想使用随机搜索5次,随机尝试在这个界限点。我为网格搜索编写了下面的代码,它工作得很好,但是我不能在绑定中修改它以进行随机搜索
rand_ctrl <- trainControl(method = "repeatedcv", repeats = 5,
search = "random")
grid <- expand.grid(alpha=seq(0,1,0.1),lambda=seq(-10,10,1)) # I think this should be modified
rand_search <- train(Response ~ ., data = train_dat,
method = "glmnet",
## Create 20 random parameter values
metric = "RMSE",
tuneLength = 5,
preProc = c("scale"),
tuneGrid = grid,
trControl = rand_ctrl)
rand\u ctrl一种方法是定义一个网格,并使用sample
选择几个随机行:
set.seed(1)
samp <- sample(1:nrow(grid), 5)
grid[samp,]
#output
alpha lambda
62 0.6 -5
86 0.8 -3
132 1.0 1
208 0.9 8
46 0.1 -6
并将其作为tuneGrid
参数提供
第二种方法不是从网格中选取随机元素,而是从定义的最小值和最大值之间选取随机数。一种方法是定义一个网格并使用sample
选取多个随机行:
set.seed(1)
samp <- sample(1:nrow(grid), 5)
grid[samp,]
#output
alpha lambda
62 0.6 -5
86 0.8 -3
132 1.0 1
208 0.9 8
46 0.1 -6
并将其作为tuneGrid
参数提供
第二种方法不是从网格中选取随机元素,而是在定义的最小值和最大值之间选取随机数。有意义。我怎么想不出来。不管怎样,谢谢你的帮助。说得通。我怎么想不出来。无论如何,谢谢你的帮助。