Я использую пакет R GBM для ускорения, чтобы выполнить регрессию для некоторых биологических данных размерами 10 000 X 932, и я хочу знать, каковы наилучшие настройки параметров для пакета GBM, особенно (n.trees, усадка, взаимодействие.глубина и n. minobsinnode), когда я искал в Интернете, я обнаружил, что пакет CARET на R может найти такие настройки параметров. Однако у меня возникли трудности с использованием пакета Caret с пакетом GBM, поэтому я просто хочу знать, как использовать курсор, чтобы найти оптимальные комбинации ранее упомянутых параметров? Я знаю, что это может показаться очень типичным вопросом, но я прочитал руководство по каретке и все еще испытываю трудности с интеграцией каретки с gbm, особенно потому, что я новичок в обоих этих пакетах.
использование пакета Caret для поиска оптимальных параметров GBM
Ответы (2)
Эта ссылка содержит конкретный пример (стр. 10) — http://www.jstatsoft.org/v28/i05/paper а>
По сути, сначала следует создать сетку значений-кандидатов для гиперпараметров (таких как n.trees, Interaction.depth и усадка). Затем вызовите общую функцию поезда, как обычно.
Не уверен, что вы нашли то, что искали, но я нахожу некоторые из этих листов менее чем полезными.
Если вы используете пакет Caret, ниже описаны необходимые параметры: > getModelInfo()$gbm$parameters
Вот несколько практических правил для запуска GBM:
- Interaction.depth равен 1, и для большинства наборов данных это кажется адекватным, но для некоторых я обнаружил, что проверка результатов на нечетные множители до максимума дала лучшие результаты. Максимальное значение, которое я видел для этого параметра, — это floor(sqrt(NCOL(обучение))).
- Усадка: чем меньше число, тем лучше прогностическая ценность, тем больше требуется деревьев и тем больше вычислительные затраты. Проверка значений на небольшом подмножестве данных с помощью чего-то вроде усадки = усадки = последовательности (0,0005, 0,05, 0005) может помочь в определении идеального значения.
- n.minobsinnode: по умолчанию 10, и обычно я не связываюсь с этим. Я пробовал c(5,10,15,20) на небольших наборах данных и не увидел адекватной отдачи от вычислительных затрат.
- п.деревья: чем меньше усадка, тем больше должно быть деревьев. Начните с n.trees = (0:50)*50 и соответствующим образом настройте.
Пример настройки с помощью пакета Caret:
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 с 64 ГБ оперативной памяти.