13

ブースティングにRGBMパッケージを使用して、10,000 X 932の次元の生物学的データの回帰を実行しています。特に、GBMパッケージに最適なパラメーター設定(n.trees、shrinkage、interaction.depth、n)を知りたいです。 minobsinnode)オンラインで検索したところ、RのCARETパッケージでそのようなパラメーター設定を見つけることができました。ただし、CaretパッケージをGBMパッケージと一緒に使用するのは難しいので、caretを使用して前述のパラメーターの最適な組み合わせを見つける方法を知りたいだけですか?これは非常に典型的な質問のように思われるかもしれませんが、私はカレットのマニュアルを読みましたが、それでもカレットをgbmと統合するのは困難です。特に、これらのパッケージの両方に非常に慣れていないためです。

4

2 に答える 2

25

探しているものが見つかったかどうかはわかりませんが、これらのシートのいくつかは役に立たないと思います。

カレットパッケージを使用している場合、以下に必要なパラメーターについて説明します。> getModelInfo()$ gbm $ parameters

彼はGBMを実行するための経験則です。

  1. Interaction.depthは1であり、ほとんどのデータセットでは適切と思われますが、いくつかのデータセットでは、最大値の奇数倍に対して結果をテストすると、より良い結果が得られることがわかりました。このパラメーターで確認した最大値はfloor(sqrt(NCOL(training)))です。
  2. 収縮:数値が小さいほど、予測値が高くなり、必要なツリーが多くなり、計算コストが高くなります。収縮=収縮=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で遊ぶことが重要であることがわかりました。現在の設定は実行に時間がかかるため、マシンに合わせて変更してください。時間が許す限りです。計算のボールパークを提供するために、私は64GBのRAMを搭載したMacPRO12コアで実行します。

于 2016-06-06T01:20:40.400 に答える
16

このリンクには具体的な例があります(10ページ) -http://www.jstatsoft.org/v28/i05/paper

基本的に、最初にハイパーパラメータ(n.trees、interaction.depth、shrinkageなど)の候補値のグリッドを作成する必要があります。次に、通常どおり汎用トレイン関数を呼び出します。

于 2013-03-26T08:35:10.693 に答える