Я предпочитаю использовать каретку при подгонке моделей из-за ее относительной скорости и возможностей предварительной обработки. Тем не менее, я немного запутался в том, как он делает прогнозы. При сравнении прогнозов, сделанных непосредственно из объекта поезда, и прогнозов, сделанных из извлеченной окончательной модели, я вижу очень разные цифры. Прогнозы от объекта поезда кажутся более точными.
library(caret)
library(ranger)
x1 <- rnorm(100)
x2 <- rbeta(100, 1, 1)
y <- 2*x1 + x2 + 5*x1*x2
data <- data.frame(x1, x2, y)
fitRanger <- train(y ~ x1 + x2, data = data,
method = 'ranger',
tuneLength = 1,
preProcess = c('knnImpute', 'center', 'scale'))
predict.data <- data.frame(x1 = rnorm(10), x2 = rbeta(10, 1, 1))
prediction1 <- predict(fitRanger, newdata = predict.data)
prediction2 <- predict(fitRanger$finalModel, data = predict.data)$prediction
results <- data.frame(prediction1, prediction2)
results
Я уверен, что это как-то связано с тем, как я препроцессирую данные в объекте поезда, но даже когда я препроцессирую тестовые данные и использую модель Ranger, чтобы делать прогнозы, значения разные
predict.data.processed <- predict.data %>%
preProcess(method = c('knnImpute',
'center',
'scale')) %>% .$data
results3 <- predict(fitRanger$finalModel, data = predict.data.processed)$prediction
results <- cbind(results, results3)
results
Я хочу извлечь прогнозы из каждого отдельного дерева в модели рейнджера, что я не могу сделать в карете. Есть мысли?