আমি ব্যবহার করে মডেল টিউন করছি caret, তবে gbmপ্যাকেজটি ব্যবহার করে আবার মডেল চালাচ্ছি । caretপ্যাকেজটি ব্যবহার করে gbmএবং আউটপুট একই হওয়া উচিত এটি আমার বোধগম্য । যাইহোক, কেবলমাত্র একটি দ্রুত পরীক্ষা চালানো data(iris)মূল্যায়ন মেট্রিক হিসাবে আরএমএসই এবং আর ^ 2 ব্যবহার করে প্রায় 5% এর মডেলের মধ্যে একটি তাত্পর্য দেখায়। আমি আংশিক নির্ভরতা প্লট ব্যবহার করতে caretপুনরায় রান ব্যবহার করে সর্বোত্তম মডেল পারফরম্যান্স খুঁজে পেতে চাই gbm। প্রজননযোগ্যতার জন্য নীচে কোড।
আমার প্রশ্নগুলি হবে:
1) আমি কেন এই দুটি প্যাকেজগুলির মধ্যে পার্থক্য দেখছি যদিও সেগুলি একই হওয়া উচিত (আমি বুঝতে পারি যে তারা স্টোকাস্টিক তবে 5% কিছুটা বড় পার্থক্য, বিশেষত যখন আমি irisআমার মডেলিংয়ের মতো সুন্দর ডেটাসেট ব্যবহার করি না ) ।
2) উভয় প্যাকেজ ব্যবহারের কোনও সুবিধা বা অসুবিধা আছে - যদি তা হয় তবে কোনটি?
3) অপ্রাসঙ্গিক: irisডেটাসেটটি সর্বোত্তম ব্যবহার interaction.depth5 টি তবে আমি যা পড়েছি তার চেয়ে বেশি এটি ব্যবহার করে সর্বোচ্চ হওয়া উচিত floor(sqrt(ncol(iris)))2 এটি কি থাম্বের একটি কঠোর নিয়ম বা এটি বেশ নমনীয়?
library(caret)
library(gbm)
library(hydroGOF)
library(Metrics)
data(iris)
# Using caret
caretGrid <- expand.grid(interaction.depth=c(1, 3, 5), n.trees = (0:50)*50,
shrinkage=c(0.01, 0.001),
n.minobsinnode=10)
metric <- "RMSE"
trainControl <- trainControl(method="cv", number=10)
set.seed(99)
gbm.caret <- train(Sepal.Length ~ ., data=iris, distribution="gaussian", method="gbm",
trControl=trainControl, verbose=FALSE,
tuneGrid=caretGrid, metric=metric, bag.fraction=0.75)
print(gbm.caret)
# caret determines the optimal model to be at n.tress=700, interaction.depth=5, shrinkage=0.01
# and n.minobsinnode=10
# RMSE = 0.3247354
# R^2 = 0.8604
# Using GBM
set.seed(99)
gbm.gbm <- gbm(Sepal.Length ~ ., data=iris, distribution="gaussian", n.trees=700, interaction.depth=5,
n.minobsinnode=10, shrinkage=0.01, bag.fraction=0.75, cv.folds=10, verbose=FALSE)
best.iter <- gbm.perf(gbm.gbm, method="cv")
print(best.iter)
# Here the optimal n.trees = 540
train.predict <- predict.gbm(object=gbm.gbm, newdata=iris, 700)
print(rmse(iris$Sepal.Length, train.predict))
# RMSE = 0.2377
R2 <- cor(gbm.gbm$fit, iris$Sepal.Length)^2
print(R2)
# R^2 = 0.9178`