Bagaimana randomForest
paket memperkirakan probabilitas kelas saat saya menggunakan predict(model, data, type = "prob")
?
Saya menggunakan ranger
untuk melatih hutan acak menggunakan probability = T
argumen untuk memprediksi probabilitas. ranger
mengatakan dalam dokumentasi bahwa:
Menumbuhkan hutan probabilitas seperti di Malley et al. (2012).
Saya mensimulasikan beberapa data dan mencoba kedua paket dan memperoleh hasil yang sangat berbeda (lihat kode di bawah)
Jadi saya tahu itu menggunakan teknik yang berbeda (kemudian ranger) untuk memperkirakan probabilitas. Tapi yang mana?
simulate_data <- function(n){
X <- data.frame(matrix(runif(n*10), ncol = 10))
Y <- data.frame(Y = rbinom(n, size = 1, prob = apply(X, 1, sum) %>%
pnorm(mean = 5)
) %>%
as.factor()
)
dplyr::bind_cols(X, Y)
}
treino <- simulate_data(10000)
teste <- simulate_data(10000)
library(ranger)
modelo_ranger <- ranger(Y ~., data = treino,
num.trees = 100,
mtry = floor(sqrt(10)),
write.forest = T,
min.node.size = 100,
probability = T
)
modelo_randomForest <- randomForest(Y ~., data = treino,
ntree = 100,
mtry = floor(sqrt(10)),
nodesize = 100
)
pred_ranger <- predict(modelo_ranger, teste)$predictions[,1]
pred_randomForest <- predict(modelo_randomForest, teste, type = "prob")[,2]
prob_real <- apply(teste[,1:10], 1, sum) %>% pnorm(mean = 5)
data.frame(prob_real, pred_ranger, pred_randomForest) %>%
tidyr::gather(pacote, prob, -prob_real) %>%
ggplot(aes(x = prob, y = prob_real)) + geom_point(size = 0.1) + facet_wrap(~pacote)
prob_real
?