Làm thế nào để randomForestgói ước tính xác suất lớp khi tôi sử dụng predict(model, data, type = "prob")?
Tôi đã sử dụng rangerđể đào tạo các khu rừng ngẫu nhiên bằng cách sử dụng probability = Tđối số để dự đoán xác suất. rangernói trong tài liệu rằng nó:
Trồng rừng xác suất như ở Malley et al. (2012).
Tôi đã mô phỏng một số dữ liệu và thử cả hai gói và thu được kết quả rất khác nhau (xem mã bên dưới)
Vì vậy, tôi biết rằng nó sử dụng một kỹ thuật khác (sau đó là kiểm lâm) để ước tính xác suất. Nhưng cái nào?
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_realsao?