不确定您是否找到了想要的内容,但我认为其中一些表并不是很有用。
如果您正在使用caret软件包,则以下内容描述了所需的参数:> getModelInfo() $ gbm $ parameters
下面是运行GBM的一些经验法则:
- interaction.depth为1,在大多数数据集上似乎足够,但在少数情况下,测试结果与最大值的奇数倍相比较会得到更好的结果。此参数的最大值我见过的是floor(sqrt(NCOL(training)))。
- 收缩:数字越小,预测价值越高,需要更多的树和更高的计算成本。在类似shrinkage = shrinkage = seq(.0005, .05,.0005)的数据子集上测试这些值可以帮助定义理想值。
- n.minobsinnode:默认值为10,通常我不会更改它。我曾尝试在小型数据集上使用c(5,10,15,20),但并没有真正看到足够的回报来支付计算成本。
- n.trees:缩小得越小,则应该拥有更多的树。从n.trees =(0:50)* 50开始,然后根据需要进行调整。
使用caret软件包的示例设置:
getModelInfo()$gbm$parameters
library(parallel)
library(doMC)
registerDoMC(cores = 20)
nl = nrow(training)
max(0.01, 0.1*min(1, nl/10000))
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)
fitControl <- trainControl(method = "repeatedcv",
repeats = 5,
preProcOptions = list(thresh = 0.95),
classProbs = TRUE,
summaryFunction = twoClassSummary)
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,
metric = "ROC"))
事情可能会根据您的数据(如分布)而改变,但我发现关键是要通过调整 gbmgird 直到得到您想要的结果。现在的设置需要很长时间才能运行,因此请根据您的计算机和时间进行修改。
为了给您一个大致的计算量,我在 Mac PRO 上使用了 12 核和 64GB 的内存。