Различные результаты с помощью randomForest () и randomForest каретки (method = «rf»)
Я новичок в уходе, и я просто хочу убедиться, что я полностью понимаю, что он делает. С этой целью я пытался воспроизвести результаты, полученные из модели randomForest (), с использованием функции traint) для метода method = "rf". К сожалению, я не смог получить совпадающие результаты, и мне интересно, что я пропускаю.
Я также добавлю, что, учитывая, что randomForest использует начальную загрузку для генерации выборок, подходящих для каждого из ntrees, и оценивает ошибку на основе прогнозов «из пакета», я немного не в курсе разницы между указанием «oob» и «boot». "в вызове функции trainControl. Эти параметры дают разные результаты, но ни один из них не соответствует модели randomForest ().
Хотя я читал веб-сайт пакета Caret (http://topepo.github.io/caret/index.html), а также различные вопросы StackOverflow, которые кажутся потенциально актуальными, но я так и не смог понять, почему модель caret method = "rf" дает разные результаты из randomForest (). Большое спасибо за любые идеи, которые вы можете предложить.
Вот воспроизводимый пример, использующий набор данных CO2 из пакета MASS.
library(MASS)
data(CO2)
library(randomForest)
set.seed(1)
rf.model <- randomForest(uptake ~ .,
data = CO2,
ntree = 50,
nodesize = 5,
mtry=2,
importance=TRUE,
metric="RMSE")
library(caret)
set.seed(1)
caret.oob.model <- train(uptake ~ .,
data = CO2,
method="rf",
ntree=50,
tuneGrid=data.frame(mtry=2),
nodesize = 5,
importance=TRUE,
metric="RMSE",
trControl = trainControl(method="oob"),
allowParallel=FALSE)
set.seed(1)
caret.boot.model <- train(uptake ~ .,
data = CO2,
method="rf",
ntree=50,
tuneGrid=data.frame(mtry=2),
nodesize = 5,
importance=TRUE,
metric="RMSE",
trControl=trainControl(method="boot", number=50),
allowParallel=FALSE)
print(rf.model)
print(caret.oob.model$finalModel)
print(caret.boot.model$finalModel)
Производит следующее:
печать (rf.model)
Mean of squared residuals: 9.380421
% Var explained: 91.88
печать (caret.oob.model $ finalModel)
Mean of squared residuals: 38.3598
% Var explained: 66.81
печать (caret.boot.model $ finalModel)
Mean of squared residuals: 42.56646
% Var explained: 63.16
И код, чтобы посмотреть на важность переменной:
importance(rf.model)
importance(caret.oob.model$finalModel)
importance(caret.boot.model$finalModel)