[英]using caret package to find optimal parameters of GBM
我正在使用R GBM軟件包來增強對尺寸為10,000 X 932的一些生物數據進行回歸,我想知道什么是GBM軟件包的最佳參數設置(n.trees,shrinkage,interaction.depth和n。 minobsinnode)當我在網上搜索時,我發現R上的CARET包可以找到這樣的參數設置。 但是,我在使用帶有GBM包的Caret包時遇到了困難,所以我只想知道如何使用插入符找到前面提到的參數的最佳組合? 我知道這似乎是一個非常典型的問題,但是我讀了插入手冊並且仍然難以將插入符號與gbm集成,特別是因為我對這兩個包都很新
不確定你是否找到了你想要的東西,但我發現其中一些不太有幫助。
如果您使用的是插入符號包,則下面描述了所需的參數:> 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"))
事情可能會根據您的數據(如分布)而改變,但我發現關鍵是要使用gbmgrid,直到您獲得所需的結果。 現在的設置需要很長時間才能運行,因此請修改為您的機器,並且時間允許。 為了給你一個計算范圍,我運行Mac PRO 12核心,64GB內存。
這個鏈接有一個具體的例子(第10頁) - http://www.jstatsoft.org/v28/i05/paper
基本上,首先應該為超參數創建候選值網格(如n.trees,interaction.depth和shrinkage)。 然后像往常一樣調用通用列車功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.