簡體   English   中英

使用插入包來找到GBM的最佳參數

[英]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的一些經驗法則:

  1. interaction.depth為1,並且在大多數數據集上似乎已經足夠了,但是在一些數據集中,我發現在奇數倍數上測試結果最大值已經給出了更好的結果。 我在這個參數中看到的最大值是floor(sqrt(NCOL(training)))。
  2. 收縮:數量越小,預測值越好,所需樹木越多,計算成本越高。 使用shrinkage = shrinkage = seq(.0005,.05,.0005)測試一小部分數據的值可能有助於定義理想值。
  3. n.minobsinnode:默認值是10,一般情況下我不會搞砸。 我在小數據集上嘗試了c(5,10,15,20),並沒有真正看到計算成本的足夠回報。
  4. n.trees:收縮越小,你應該擁有越多的樹木。 從n.trees =(0:50)* 50開始並相應調整。

使用插入符包的示例設置:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM