আরবিবিএম কীভাবে ডিস্ট্রিবিউশন = "অ্যাডাবুস্ট" দিয়ে ব্যবহার করবেন?


9

ডকুমেন্টেশনে উল্লেখ করা হয়েছে যে বিতরণ = "অ্যাডাবুস্ট" সহ আর জিবিএম 0-1 শ্রেণিবিন্যাস সমস্যার জন্য ব্যবহার করা যেতে পারে। নিম্নলিখিত কোড খণ্ড বিবেচনা করুন:

gbm_algorithm <- gbm(y ~ ., data = train_dataset, distribution = "adaboost", n.trees = 5000)
gbm_predicted <- predict(gbm_algorithm, test_dataset, n.trees = 5000)

এটি ডকুমেন্টেশনে পাওয়া যাবে যে পূর্বাভাস.gbm

পূর্বাভাসের একটি ভেক্টর প্রদান করে। ডিফল্টরূপে পূর্বাভাসগুলি f (x) এর স্কেলে থাকে।

তবে বিতরণের ক্ষেত্রে বিশেষ স্কেল পরিষ্কার নয় "অ্যাডাবোস্ট"।

পূর্বাভাস.gbm রিটার্ন মানগুলির ব্যাখ্যায় কেউ কী সহায়তা করতে পারে এবং 0-1 আউটপুটে রূপান্তরের ধারণা সরবরাহ করতে পারে?


এই প্রশ্নটি কেবলমাত্র কীভাবে আর আউটপুট ব্যাখ্যা করতে হবে এবং সম্পর্কিত পরিসংখ্যান সংক্রান্ত সমস্যা সম্পর্কে নয় (যদিও এটি এটি একটি খারাপ প্রশ্ন করে না)। যেমন এটি চেয়ে বরং স্ট্যাক ওভারফ্লোতে , এবং সম্ভবত উত্তর দেওয়া হবে flow দয়া করে ক্রস-পোস্ট করবেন না (এসই দৃ strongly়ভাবে এটিকে নিরুৎসাহিত করে), আপনি যদি আপনার ক্যু দ্রুত স্থানান্তরিত করতে চান তবে দয়া করে মডারেটরের মনোযোগের জন্য এটি পতাকাঙ্কিত করুন।
গুং - মনিকা পুনরায়

4
@ গুং আমার কাছে বৈধ পরিসংখ্যানগত প্রশ্নের মতো মনে হচ্ছে। জিবিএম প্যাকেজ অ্যাডাবুস্টের জন্য ব্যবহৃত ডিভায়েন্স সরবরাহ করে তবে এফ (এক্স) কী এবং কীভাবে সম্ভাব্যতার স্কেলে রূপান্তর করতে হবে তা সম্ভবত আমার কাছে পরিষ্কার নয় (সম্ভবত প্ল্যাট স্কেলিং ব্যবহার করতে হবে)। cran.r-project.org/web/packages/gbm/vignettes/gbm.pdf
বি_মিনার

উত্তর:


11

অ্যাডাবোস্ট পদ্ধতি লগিট স্কেলে পূর্বাভাস দেয়। আপনি এটি 0-1 আউটপুটে রূপান্তর করতে পারেন:

gbm_predicted<-plogis(2*gbm_predicted)

লগিসের ভিতরে 2 * নোট করুন


11

আপনি predict.gbmকার্য থেকে সরাসরি সম্ভাবনাগুলিও পেতে পারেন ;

predict(gbm_algorithm, test_dataset, n.trees = 5000, type = 'response')

3

অ্যাডাবুস্ট লিঙ্ক ফাংশনটি এখানে বর্ণিত হয়েছে । এই উদাহরণটি গণনার বিশদ বিবরণ প্রদান করে:

library(gbm);
set.seed(123);
n          <- 1000;
sim.df     <- data.frame(x.1 = sample(0:1, n, replace=TRUE), 
                         x.2 = sample(0:1, n,    replace=TRUE));
prob.array <- c(0.9, 0.7, 0.2, 0.8);
df$y       <- rbinom(n, size = 1, prob=prob.array[1+sim.df$x.1+2*sim.df$x.2])
n.trees    <- 10;
shrinkage  <- 0.01;

gbmFit <- gbm(
  formula           = y~.,
  distribution      = "bernoulli",
  data              = sim.df,
  n.trees           = n.trees,
  interaction.depth = 2,
  n.minobsinnode    = 2,
  shrinkage         = shrinkage,
  bag.fraction      = 0.5,
  cv.folds          = 0,
  # verbose         = FALSE
  n.cores           = 1
);

sim.df$logods  <- predict(gbmFit, sim.df, n.trees = n.trees);  #$
sim.df$prob    <- predict(gbmFit, sim.df, n.trees = n.trees, type = 'response');  #$
sim.df$prob.2  <- plogis(predict(gbmFit, sim.df, n.trees = n.trees));  #$
sim.df$logloss <- sim.df$y*log(sim.df$prob) + (1-sim.df$y)*log(1-sim.df$prob);  #$


gbmFit <- gbm(
  formula           = y~.,
  distribution      = "adaboost",
  data              = sim.df,
  n.trees           = n.trees,
  interaction.depth = 2,
  n.minobsinnode    = 2,
  shrinkage         = shrinkage,
  bag.fraction      = 0.5,
  cv.folds          = 0,
  # verbose         = FALSE
  n.cores           = 1
);

sim.df$exp.scale  <- predict(gbmFit, sim.df, n.trees = n.trees);  #$
sim.df$ada.resp   <- predict(gbmFit, sim.df, n.trees = n.trees, type = 'response');  #$
sim.df$ada.resp.2 <- plogis(2*predict(gbmFit, sim.df, n.trees = n.trees));  #$
sim.df$ada.error  <- -exp(-sim.df$y * sim.df$exp.scale);  #$

sim.df[1:20,]

আমি খুব সামান্য পরিবর্তন চাই বলে আমি সম্পাদনা করতে পারি না। 'Df y'। y´shouldbe´sim.df
রিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.