7

я чувствую себя некомфортно со значением параметра stepFactor функции tuneRF, которая используется для настройки параметров mtry используется далее в функции randomForest.R: неясно поведение функции tuneRF (RandomForest пакет)

Документация tuneRF говорит, что stepFactor является величиной, с помощью которого выбранного mtry получает спущенном или завышен. Очевидно, что поскольку mtry - это количество переменных, выбранных случайным образом, оно должно быть целым числом, однако я видел много примеров в сети, используя stepFactor=1.5. Сначала я думал, что R использует по умолчанию следующий mtry, равный floor(mtry_current-stepFactor), но оказалось, что я ошибся. Кроме того, я не понимаю команды R, отображающие search left... search right..., а tuneRF работает. Я думал, что это была информация о том, как раздувать или дефлировать параметр mtry, но мои предположения не оказались правильными.

Подводя итог этому длинному и не слишком изящному описанию моих сомнений, задавайте следующие вопросы: Почему stepFactor НЕ целое число?

Каким образом следующие значения mtry? Что искать влево/вправо на самом деле означает ???

Любая помощь была бы очень признательна !! :)

+0

У меня нет опыта работы с 'tuneRF', хотя я иногда использовал пакет' randomForest'. Теоретически это должно быть целое число, но, возможно, 1.5 может сказать, что при каждом повторе бутстрапа 'mtry' накачивается или дефлируется случайным выбором из 1 или 2 предикторов. Это просто моя догадка. –

ответ

7

Ниже приводится краткое изложение того, как tuneRF работ:

  1. а. Установите mtry к значению по умолчанию SQRT (р) для классификации и р/3 для регрессии (где р = общее число переменных)

    б. Вычислить ошибку вне сумм (OOB) (например, error_default) для случайного леса с mtry установлено на значение по умолчанию, указанное выше

  2. a. Посмотрите налево: установите mtry = значение по умолчанию/stepFactor. Например, если stepFactor = 1,5 и используемая по умолчанию начальное значение равно 8, mtry будет установлено равным 8/1.5 = 5.33, округляется до быть целым числом, которое дает 6

    б. Вычислить ошибку OOB, например error_left

  3. a. Посмотрите направо: set mtry = значение по умолчанию * stepFactor. Чтобы продолжить мой пример, mtry будет установлен как 8 * 1,5 = 12

    b. Вычислить ошибку OOB, например error_right

  4. i. Если (error_default < error_right) ИЛИ (error_default < error_left), лучший mtry значение по умолчанию

    II.Если предыдущее условие не выполняется, а дельта между errors_default и error_right/error_left меньше, чем улучшить параметр, лучший mtry значение по умолчанию

    III. Без потери общности, если условие не выполнено, и если error_right < error_left и if (error_default-error_right)>улучшить, установить mtry быть mtry_right (12). С этого момента всегда идите направо

  5. Если 4.iii. проверяется, итерация: set mtry быть mtry_right * stepFactor (в моем примере, 12 * 1,5 = 18), вычислить ошибку OOB и сравнить ее с ошибкой, полученной на предыдущем этапе (в моем примере, для mtry = 12). Если ошибка с ошибкой меньше, и если коэффициент усиления в ошибке недостаточен (т. Е.>улучшить), выберите новый mtry и продолжайте повторять эти шаги, в противном случае остановите и верните текущий mtry в качестве лучший mtry

Чем меньше stepFactor вы установили (например, 1,1, 1,2), тем больше значения mtry вы пытаетесь (штраф поиск), тем больше stepFactor вы установили (например, 2, 2,5) , тем меньше значений вы пытаетесь (грубый поиск). Кроме того, при низких значениях улучшите, поиск продолжится дольше.