কীভাবে জিবিএম প্রেডিকশন ইন্টারভেল পাবেন to


12

আমি ক্যারেট প্যাকেজটি ব্যবহার করে জিবিএম মডেলগুলির সাথে কাজ করছি এবং আমার পূর্বাভাসযুক্ত ডেটার জন্য পূর্বাভাস অন্তরগুলি সমাধান করার জন্য একটি পদ্ধতি সন্ধান করছি। আমি ব্যাপক অনুসন্ধান করেছি তবে র্যান্ডম ফরেস্টের পূর্বাভাস অন্তরগুলি সন্ধান করার জন্য কয়েকটি ধারণা নিয়ে এসেছি। যে কোনও সহায়তা / আর কোডের প্রশংসা করা হবে!

উত্তর:


4

সম্পাদনা: নীচের মন্তব্যে যেমন উল্লেখ করা হয়েছে তেমনি ভবিষ্যদ্বাণীগুলির জন্য আত্মবিশ্বাসের অন্তর দেয় এবং পূর্বাভাসের অন্তরগুলি কঠোরভাবে নয় । আমার উত্তরটি নিয়ে কিছুটা ট্রিগার খুশি হয়েছিল এবং এটিকে কিছু অতিরিক্ত চিন্তা দেওয়া উচিত ছিল।

এই উত্তরটি উপেক্ষা করে নির্দ্বিধায় বা পূর্বাভাস অন্তরগুলি পাওয়ার জন্য কোডটি তৈরি করার চেষ্টা করুন।


পূর্বাভাস অন্তরগুলি কয়েকবার তৈরি করার জন্য আমি সাধারণ বুটস্ট্র্যাপ ব্যবহার করেছি তবে অন্যান্য (আরও ভাল) উপায় থাকতে পারে।

প্যাকেজের oilডেটা বিবেচনা করুন caretএবং ধরুন আমরা প্যালমিটিকের উপর স্টিয়ারিকের প্রভাবের জন্য আংশিক নির্ভরতা এবং 95% অন্তর তৈরি করতে চাই। নীচে কেবলমাত্র একটি সাধারণ উদাহরণ তবে আপনি আপনার প্রয়োজন অনুসারে এটি নিয়ে খেলতে পারেন। যুক্তিটি gbmমঞ্জুর করতে প্যাকেজটি আপডেট হয়েছে তা নিশ্চিত করুনgrid.pointsplot.gbm

library(caret)
data(oil)
#train the gbm using just the defaults.
tr <- train(Palmitic ~ ., method = "gbm" ,data = fattyAcids, verbose = FALSE)

#Points to be used for prediction. Use the quartiles here just for illustration
x.pt <- quantile(fattyAcids$Stearic, c(0.25, 0.5, 0.75))

#Generate the predictions, or in this case, the partial dependencies at the selected points. Substitute plot() for predict() to get predictions
p <- plot(tr$finalModel, "Stearic", grid.levels = x.pt, return.grid = TRUE)

#Bootstrap the process to get prediction intervals
library(boot)

bootfun <- function(data, indices) {
  data <- data[indices,]

  #As before, just the defaults in this example. Palmitic is the first variable, hence data[,1]
  tr <- train(data[,-1], data[,1], method = "gbm", verbose=FALSE)

  # ... other steps, e.g. using the oneSE rule etc ...
  #Return partial dependencies (or predictions)

  plot(tr$finalModel, "Stearic", grid.levels = x.pt, return.grid = TRUE)$y
  #or predict(tr$finalModel, data = ...)
}

#Perform the bootstrap, this can be very time consuming. Just 99 replicates here but we usually want to do more, e.g. 500. Consider using the parallel option
b <- boot(data = fattyAcids, statistic = bootfun, R = 99)

#Get the 95% intervals from the boot object as the 2.5th and 97.5th percentiles
lims <- t(apply(b$t, 2, FUN = function(x) quantile(x, c(0.025, 0.975))))

এটি করার একটি উপায় যা অন্তত জিবিএম টিউনিং থেকে উদ্ভূত অনিশ্চয়তার জন্য অ্যাকাউন্ট করার চেষ্টা করে। একটি অনুরূপ পদ্ধতির ব্যবহার করা হয়েছে http://onlinelibrary.wiley.com/doi/10.2193/2006-503/abstract

কখনও কখনও বিন্দু অনুমান ব্যবধানের বাইরে থাকে তবে টিউনিং গ্রিডটি সংশোধন করা (অর্থাত্ গাছের সংখ্যা এবং / বা গভীরতা বৃদ্ধি করা) সাধারণত এটি সমাধান করে।

আশাকরি এটা সাহায্য করবে!


1
যদি আমি আপনার কোডটি সঠিকভাবে বুঝতে পারি তবে আপনার কাছে যা আছে তা অনুমানের জন্য 95% আত্মবিশ্বাসের ব্যবধান inter এটি 95% পূর্বাভাস ব্যবধানের মতো নয়, যা অবশিষ্ট (এলোমেলো) ত্রুটি যুক্ত করে।
হংক ওওই

ডি আহা! আপনি সঠিক. জবাব দেওয়ার ক্ষেত্রে কিছুটা দ্রুত ছিল। ধন্যবাদ, আমি আমার উত্তরটি সম্পাদনা করব।
এরিকএল

সাহায্যের জন্য ধন্যবাদ! বুটস্ট্র্যাপ ফাংশন নিয়ে যদিও আমার একটি সমস্যা হচ্ছে। আমি এই সমস্যাটি stats.stackexchange.com/questions/117329/… এ পোস্ট করেছি । আমার ডেটাসেটের সাহায্যে কীভাবে বুটস্ট্র্যাপ ফাংশনটি সঠিকভাবে সেটআপ করা যায় তা আমি নিশ্চিত নই।
कूপারবুকি 05

1
আমার ধারণা এই মুহুর্তে এটি আমি যা খুঁজছি তা নয়, তাই আমি এখনও একটি উত্তর খুঁজছি!
কুপারবুকি05
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.