কীভাবে `predict.randomForest` শ্রেণীর সম্ভাবনাগুলি অনুমান করে?


16

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?
ফায়ারব্যাগ

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
ধন্যবাদ! সম্ভাবনার বনাঞ্চল কেন ভোটের অনুপাতের চেয়ে ভাল কেন আপনার কোনও ধারণা আছে? অথবা আপনি কি মনে করেন এটি কেবল এই সমস্যার জন্যই ঘটে? এই লিঙ্কটি দেখুন (পর্তুগিজ ভাষায়)
ড্যানিয়েল ফ্যাবল 21

2
@ ড্যানিয়েল ফ্যালবেল যদিও আমি এর সাথে বেশ পরিচিত তখনও আমি এ সম্পর্কে খুব randomForestবেশি জ্ঞাত নই ranger(আসলে আমি এটি কখনই ব্যবহার করি নি), তাই আমি উত্তর দিতে সক্ষম হব না, আমি দুঃখিত। তবে এটি একটি আকর্ষণীয় প্রশ্ন, সম্ভবত আপনি উভয় কৌশল কীভাবে আলাদা সে সম্পর্কে আরও একটি প্রশ্ন করতে পারেন।
ফায়ারব্যাগ

6

ম্যালে (২০১২) এখানে উপলব্ধ: 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))। এইভাবে ওয়াই উত্পন্ন হয়, এক্স 1, এক্স 2, ..., এক্স 10 যোগ করে এবং তারপরে গড় বণ্টনের পরিমাণ = 5 দিয়ে সমষ্টি উপস্থাপন করে। আপনি কি মনে করেন এটি অর্থবোধ করে?
ড্যানিয়েল ফ্যাবল

-1

আপনি যদি ব্যাগ-অফ-ব্যাগ সম্ভাব্যতা অনুমান করতে চান তবে আপনি কেবলমাত্র মডেল $ ভোট ব্যবহার করে আর-এ র্যান্ডমফোরস্ট প্যাকেজটিতে এটি করতে পারেন। অন্যান্য সম্ভাবনার অনুমানগুলি ওওবি নয়।


OOB সম্ভাবনা অনুমান কি?
ব্যবহারকারী 158565

এটি ব্যাগ সম্ভাবনার অনুমানের বাইরে। এলোমেলো বনাঞ্চলে, তারা প্রতিটি শ্রেণীর সাথে সম্পর্কিত সম্ভাব্যতা অনুমান করার একটি উপায় হ'ল তারা প্রতিটি শ্রেণীর পক্ষে যে বৃক্ষকে ভোট দিয়েছে তার অনুপাত গণনা করে। ওওবি অনুমানটি একই কাজ করবে তবে কেবল সেই গাছের ভোট গণনা করুন যে উদাহরণটি তাদের প্রশিক্ষণে ব্যবহার করা হয়নি (ওরফে উদাহরণটি ব্যাগটি ছিল না)
সর্বোচ্চ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.