वर्ग की संभाव्यता का अनुमान ``ैंड्रैंडफ़ॉरफेस्ट` कैसे करता है?


17

randomForestजब मैं उपयोग करता हूं तो पैकेज की कक्षा की संभावनाओं का अनुमान कैसे लगाया जाता है predict(model, data, type = "prob")?

मैं संभावनाओं का अनुमान लगाने rangerके probability = Tतर्क का उपयोग करके यादृच्छिक जंगलों के प्रशिक्षण के लिए उपयोग कर रहा था । rangerप्रलेखन में कहते हैं कि यह:

मालली एट अल के रूप में एक संभावना वन विकसित करें। (2012)।

मैंने कुछ डेटा का अनुकरण किया और दोनों पैकेजों की कोशिश की और बहुत अलग परिणाम प्राप्त किए (नीचे कोड देखें)

यहाँ छवि विवरण दर्ज करें

तो मुझे पता है कि यह संभावनाओं का अनुमान लगाने के लिए एक अलग तकनीक (तब रेंजर) का उपयोग करता है। लेकिन कौन सा?

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)

1
बस जिज्ञासा से बाहर, क्या होगा prob_real?
Firebug

1
वास्तविक प्रतिक्रिया संभावना। जैसा कि यह एक अनुकार है मेरे पास प्रत्येक अवलोकन के लिए यह है
डैनियल फेलबेल

जवाबों:


17

यह पहनावा में पेड़ों के वोटों का अनुपात है।

library(randomForest)

rf = randomForest(Species~., data = iris, norm.votes = TRUE, proximity = TRUE)
p1 = predict(rf, iris, type = "prob")
p2 = predict(rf, iris, type = "vote", norm.votes = TRUE)

identical(p1,p2)
#[1] TRUE

वैकल्पिक रूप से, यदि आप अपनी संभावनाओं को गुणा करते हैं, तो आपको ntreeएक ही परिणाम मिलता है, लेकिन अब अनुपात के बजाय मायने रखता है।

p1 = predict(rf, iris, type = "prob")
p2 = predict(rf, iris, type = "vote", norm.votes = FALSE)

identical(500*p1,p2)
#[1] TRUE

2
धन्यवाद! क्या आपके पास कोई विचार है कि वोट का अनुपात बेहतर क्यों है? या आपको लगता है कि यह सिर्फ इस समस्या के लिए होता है? इस लिंक को देखें (पुर्तगाली में)
डैनियल फेलबेल

2
@DanielFalbel जब मैं काफी परिचित randomForestहूं तो मैं बहुत जानकार नहीं हूं ranger(वास्तव में, मैंने कभी इसका इस्तेमाल नहीं किया था), इसलिए मैं जवाब नहीं दे पाऊंगा, मुझे क्षमा करें। लेकिन यह एक दिलचस्प सवाल है, शायद आप एक और सवाल कर सकते हैं कि दोनों रणनीतियां अलग-अलग कैसे हैं।
Firebug

6

द माली (2012) यहां उपलब्ध है: http://dx.doi.org/10.3414%2FME00-01-0052 । एक पूर्ण संदर्भ रेंजर प्रलेखन में संदर्भ भाग में है।

संक्षेप में, प्रत्येक पेड़ वर्ग की संभावनाओं की भविष्यवाणी करता है और इन संभावनाओं को जंगल की भविष्यवाणी के लिए औसत किया जाता है। दो वर्गों के लिए, यह 0-1 कोडित प्रतिक्रिया पर प्रतिगमन वन के बराबर है।

इसके विपरीत, प्रत्येक पेड़ के randomForestसाथ type="prob"एक वर्ग भविष्यवाणी करता है और इन वर्गों से संभावनाओं की गणना की जाती है।

यहां उदाहरण में मैंने संभावनाओं को उत्पन्न करने के लिए सामान्य वितरण के बजाय समान वितरण का उपयोग करने की कोशिश की, और यहां अन्य दृष्टिकोण बेहतर प्रदर्शन करते हैं। मुझे आश्चर्य है कि क्या ये संभावनाएं सच हैं?

वैसे, randomForestवर्गीकरण और मैन्युअल संभावना संगणना ( predict.all=TRUEभविष्यवाणी में उपयोग ) का उपयोग करके उपर्युक्त उदाहरण के समान परिणाम रेंजर के साथ प्राप्त किया जा सकता है ।


आप देख सकते हैं कि वे सिमुलेशन कोड में प्रतिक्रिया की संभावनाएं हैं। को देखो: Y = rbinom(n, size = 1, prob = apply(X, 1, sum) %>% pnorm(mean = 5))। इसी प्रकार Y उत्पन्न होता है, X1, X2, ..., X10 को सम्‍मिलित करता है और फिर माध्य = 5 के साथ सामान्‍य वितरण की मात्रा को दर्शाता है। क्या आपको लगता है कि यह समझ में आता है?
डैनियल फेलबेल

-1

यदि आप आउट-ऑफ-बैग संभावना का अनुमान चाहते हैं, तो आप इसे केवल $ $ मॉडल का उपयोग करके आर में यादृच्छिक फ़र्स्ट पैकेज में कर सकते हैं। अन्य संभावना अनुमान OOB नहीं हैं।


OOB प्रायिकता का अनुमान क्या है?
user158565

यह बैग प्रायिकता के अनुमान से बाहर है। एक यादृच्छिक जंगल में, एक तरह से वे अनुमान लगाते हैं कि प्रत्येक वर्ग से जुड़ी संभावना है कि वे उन पेड़ों के अनुपात की गणना करें जो प्रत्येक वर्ग के लिए मतदान करते हैं। ओओबी का अनुमान भी ऐसा ही होगा, लेकिन केवल उन पेड़ों के वोटों को गिनें जो कि उनके प्रशिक्षण में उदाहरण का उपयोग नहीं किया गया था (उर्फ उदाहरण बैग में नहीं था)
मैक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.