2015-11-06 4 views
2

Я использовал randomForest метод из пакета «randomForest» в наборе данных тренировки, чтобы увидеть, как он связан с методом дерева регрессии, представленным в пакете «дерево», просто из любопытства. Вот команда:R: дополнительная случайность в randomForest?

rf.fit = randomForest(formula, data = dataTrain, mtry = var, ntree = 1, 
         replace = FALSE, samplesize = nrow(dataTrain)) 

где var это число переменных в формуле. Поскольку все переменные были приняты, выборка была выполнена без замены в полном наборе учебных данных, я думал, что предсказание на тестовом наборе данных выходной модели rf.fit должно быть последовательным и равным прогнозу по методу дерева. Однако он менялся от раунда к раунду, если семя не было установлено и отличалось от последнего метода. Я смущен, когда возникает дополнительная случайность.

+0

я тестировал 'randomForest' с' iris' набора данных и * делает * производить различные предсказания каждый раз, даже с 'mtry' равно числу предикторных переменных (в этом случае 4),' samplesize = nrow (iris) 'и других параметров, указанных вами. – eipi10

ответ

1

В двух алгоритмах, которые вы сравниваете, используются разные критерии разделения, поэтому я не ожидал бы, что результаты прогнозирования будут идентичными, даже если вы не столкнулись с «случайностью», как вы говорите.

Возможно, вам придется потратить некоторое время на чтение используемых алгоритмов (см. Описательные работы по Breiman (2001) и реализации R на Liaw and Wiener (2002)). «Случайность» вводится потому, что для каждого дерева, порожденного алгоритмом случайных лесов, существует случайная подвыборка из 1/3 выборки, отсутствующая для оценки ошибок вне сумм. Таким образом, дерево оценивается только на других 2/3 ваших данных, которые будут меняться от прогона до бега, если только вы не нажмете set.seed().

Вы можете проверить, какие наблюдения используются в оценках OOB в пригонки объекта: rf.fit$oob.times

Смежные вопросы