DOS*_*ter 9 optimization r gbm r-caret
我正在使用R GBM软件包来增强对尺寸为10,000 X 932的一些生物数据进行回归,我想知道什么是GBM软件包的最佳参数设置(n.trees,shrinkage,interaction.depth和n. minobsinnode)当我在网上搜索时,我发现R上的CARET包可以找到这样的参数设置.但是,我在使用带有GBM包的Caret包时遇到了困难,所以我只想知道如何使用插入符找到前面提到的参数的最佳组合?我知道这似乎是一个非常典型的问题,但是我读了插入手册并且仍然难以将插入符号与gbm集成,特别是因为我对这两个包都很新
Sha*_*ter 21
不确定你是否找到了你想要的东西,但我发现其中一些不太有帮助.
如果您使用的是插入符号包,则下面描述了所需的参数:> getModelInfo()$ gbm $ parameters
他是运行GBM的一些经验法则:
使用插入符包的示例设置:
getModelInfo()$gbm$parameters
library(parallel)
library(doMC)
registerDoMC(cores = 20)
# Max shrinkage for gbm
nl = nrow(training)
max(0.01, 0.1*min(1, nl/10000))
# Max Value for interaction.depth
floor(sqrt(NCOL(training)))
gbmGrid <- expand.grid(interaction.depth = c(1, 3, 6, 9, 10),
n.trees = (0:50)*50,
shrinkage = seq(.0005, .05,.0005),
n.minobsinnode = 10) # you can also put something like c(5, 10, 15, 20)
fitControl <- trainControl(method = "repeatedcv",
repeats = 5,
preProcOptions = list(thresh = 0.95),
## Estimate class probabilities
classProbs = TRUE,
## Evaluate performance using
## the following function
summaryFunction = twoClassSummary)
# Method + Date + distribution
set.seed(1)
system.time(GBM0604ada <- train(Outcome ~ ., data = training,
distribution = "adaboost",
method = "gbm", bag.fraction = 0.5,
nTrain = round(nrow(training) *.75),
trControl = fitControl,
verbose = TRUE,
tuneGrid = gbmGrid,
## Specify which metric to optimize
metric = "ROC"))
Run Code Online (Sandbox Code Playgroud)
事情可能会根据您的数据(如分布)而改变,但我发现关键是要使用gbmgrid,直到您获得所需的结果.现在的设置需要很长时间才能运行,因此请修改为您的机器,并且时间允许.为了给你一个计算范围,我运行Mac PRO 12核心,64GB内存.
Nis*_*nth 15
这个链接有一个具体的例子(第10页) - http://www.jstatsoft.org/v28/i05/paper
基本上,首先应该为超参数创建候选值网格(如n.trees,interaction.depth和shrinkage).然后像往常一样调用通用列车功能.