Настройка гиперпараметров с использованием пакета MLR

Я хочу настроить гиперпараметры для случайного леса с помощью пакета MLR. У меня есть несколько вопросов:

1) Как мне решить, какой из параметров мне следует настроить? Я слышал что-то о том, как поддерживать максимально возможное количество деревьев num.trees и настраивать mtry? (Я не мог найти ничего в Интернете, подтверждающего это)

2) Какой должен быть у меня диапазон настройки мтры? Есть ли здесь хорошее эмпирическое правило между 0 и 1/3 параметра? Если да, то как мне интегрировать это в приведенный ниже код, если у меня разные наборы данных (т.е. что бы я написал вместо lower = 0 и upper = 10)?

3) Наконец, имеет ли смысл создавать обучающегося дважды, один раз с помощью функции makeLearner, где я устанавливаю параметр в par.val, а затем один раз с помощью функции makeTuneWrapper? Все равно не перезаписывает?

learnerRF = makeLearner("regr.ranger", par.vals = list("num.trees" = 5000)) 
parsRF = makeParamSet(
  makeIntegerParam("mtry", lower = 0 , upper = 10), 
)
tuneRF = makeTuneControlGrid() 
inner = makeResampleDesc("CV", iters = 10)
learnerRF = makeTuneWrapper(learnerRF, resampling = inner, par.set = parsRF,control = tuneRF, show.info = FALSE) 

person Sarah    schedule 28.06.2018    source источник


Ответы (2)


Ответы на 1 и 2 одинаковы - столько, сколько вы можете себе позволить с вычислительной точки зрения, то есть сделайте количество параметров и их диапазоны как можно большими. Это даст максимально возможный выигрыш за счет рассмотрения наибольшего количества вариантов конфигурации.

Что касается 3, вам не нужно создавать отдельного учащегося перед вызовом makeTuneWrapper() (и нет никакого смысла устанавливать там параметры, которые вы позже настраиваете). Вы можете сделать и то, и другое за один шаг следующим образом:

learnerRF = makeTuneWrapper("regr.ranger", resampling = inner, par.set = parsRF, 
                            control = tuneRF, show.info = FALSE)
person Lars Kotthoff    schedule 28.06.2018
comment
Спасибо, Ларс. Что касается 1 и 2), узнаю ли я это методом проб и ошибок, или есть более быстрый способ узнать, что я могу себе позволить с точки зрения вычислений? Я провожу сравнительный анализ с 3 различными алгоритмами и 30 задачами, поэтому потребуется некоторое время, чтобы выяснить, какой параметр я должен включить и какое наибольшее количество вариантов конфигурации я могу себе позволить ... - person Sarah; 28.06.2018
comment
В конце концов, вы должны это попробовать. - person Lars Kotthoff; 28.06.2018
comment
@Sarah Если вы ответили на вопрос, отметьте его, приняв ответы и указав должное;) - person pat-s; 03.07.2018
comment
@ pat-s и Ларс извините, я только что это вижу. Спасибо за ответы, они очень помогли :) - person Sarah; 04.07.2018

Вы можете ознакомиться с этими двумя статьями, которые пытаются ответить на ваши вопросы:

http://jmlr.org/papers/v18/17-269.html

https://arxiv.org/abs/1804.03515

tuneRanger - это пакет, специально предназначенный для настройки случайного леса в R.

person PhilippPro    schedule 30.06.2018