Kullandığımda randomForest
paket sınıf olasılıklarını nasıl tahmin ediyor predict(model, data, type = "prob")
?
Ben kullanıyordum ranger
kullanarak rastgele ormanlar yetiştirilmesi probability = T
olasılıklarını tahmin etmek argüman. ranger
belgelerde şöyle diyor:
Malley ve ark. (2012).
Bazı verileri simüle ettim ve her iki paketi de denedim ve çok farklı sonuçlar elde ettim (aşağıdaki koda bakın)
Bu yüzden olasılıkları tahmin etmek için farklı bir teknik (sonra ranger) kullandığını biliyorum. Fakat hangisi?
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
?