যেহেতু ইন্টারফেসে xgboost
মধ্যে caret
সম্প্রতি পরিবর্তিত হয়েছে, এখানে একটি স্ক্রিপ্ট যে ব্যবহারের একটি সম্পূর্ণরূপে মন্তব্য, walkthrough প্রদান করে caret
সুর xgboost
অধি-প্যারামিটার।
এর জন্য, আমি কাগল প্রতিযোগিতা "গিভ মি কিছু ক্রেডিট" থেকে প্রশিক্ষণ ডেটা ব্যবহার করব ।
1. একটি xgboost
মডেল ফিট
এই বিভাগে, আমরা:
xgboost
স্বেচ্ছাসেবক হাইপারপ্যারামিটার সহ একটি মডেল ফিট করুন
- ক্রস-বৈধতা (
xgb.cv
) ব্যবহার করে লোকসানের (এউসি-আরওসি) মূল্যায়ন করুন
- প্রশিক্ষণ বনাম পরীক্ষার মূল্যায়ন মেট্রিক প্লট করুন
এটি করার জন্য এখানে কিছু কোড রয়েছে।
library(caret)
library(xgboost)
library(readr)
library(dplyr)
library(tidyr)
# load in the training data
df_train = read_csv("04-GiveMeSomeCredit/Data/cs-training.csv") %>%
na.omit() %>% # listwise deletion
select(-`[EMPTY]`) %>%
mutate(SeriousDlqin2yrs = factor(SeriousDlqin2yrs, # factor variable for classification
labels = c("Failure", "Success")))
# xgboost fitting with arbitrary parameters
xgb_params_1 = list(
objective = "binary:logistic", # binary classification
eta = 0.01, # learning rate
max.depth = 3, # max tree depth
eval_metric = "auc" # evaluation/loss metric
)
# fit the model with the arbitrary parameters specified above
xgb_1 = xgboost(data = as.matrix(df_train %>%
select(-SeriousDlqin2yrs)),
label = df_train$SeriousDlqin2yrs,
params = xgb_params_1,
nrounds = 100, # max number of trees to build
verbose = TRUE,
print.every.n = 1,
early.stop.round = 10 # stop if no improvement within 10 trees
)
# cross-validate xgboost to get the accurate measure of error
xgb_cv_1 = xgb.cv(params = xgb_params_1,
data = as.matrix(df_train %>%
select(-SeriousDlqin2yrs)),
label = df_train$SeriousDlqin2yrs,
nrounds = 100,
nfold = 5, # number of folds in K-fold
prediction = TRUE, # return the prediction using the final model
showsd = TRUE, # standard deviation of loss across folds
stratified = TRUE, # sample is unbalanced; use stratified sampling
verbose = TRUE,
print.every.n = 1,
early.stop.round = 10
)
# plot the AUC for the training and testing samples
xgb_cv_1$dt %>%
select(-contains("std")) %>%
mutate(IterationNum = 1:n()) %>%
gather(TestOrTrain, AUC, -IterationNum) %>%
ggplot(aes(x = IterationNum, y = AUC, group = TestOrTrain, color = TestOrTrain)) +
geom_line() +
theme_bw()
প্রশিক্ষণ বনাম প্রশিক্ষণ এওসি দেখতে দেখতে এখানে রয়েছে:
2. হাইপারপ্যারামিটার অনুসন্ধান ব্যবহার করে train
হাইপারপ্যারামিটার অনুসন্ধানের জন্য, আমরা নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করি:
data.frame
প্যারামিটারগুলির অনন্য সংমিশ্রণগুলির সাথে একটি তৈরি করুন যার জন্য আমরা প্রশিক্ষিত মডেলগুলি চাই।
- ক্রস-বৈধকরণের প্যারামিটারগুলি সহ প্রতিটি মডেলের প্রশিক্ষণে প্রযোজ্য নিয়ন্ত্রণ পরামিতিগুলি নির্দিষ্ট করুন এবং উল্লেখ করুন যে সম্ভাবনাগুলি গণনা করা হবে যাতে এটিউসিটি গণনা করা যায়
- প্রতিটি প্যারামিটার সংমিশ্রণের জন্য প্রতিটি মডেলের জন্য এটিউ সংরক্ষণ করে ক্রস-বৈধকরণ এবং প্রশিক্ষণ দিন।
এখানে কিছু কোড রয়েছে যা এটি কীভাবে করবে তা দেখায়।
# set up the cross-validated hyper-parameter search
xgb_grid_1 = expand.grid(
nrounds = 1000,
eta = c(0.01, 0.001, 0.0001),
max_depth = c(2, 4, 6, 8, 10),
gamma = 1
)
# pack the training control parameters
xgb_trcontrol_1 = trainControl(
method = "cv",
number = 5,
verboseIter = TRUE,
returnData = FALSE,
returnResamp = "all", # save losses across all models
classProbs = TRUE, # set to TRUE for AUC to be computed
summaryFunction = twoClassSummary,
allowParallel = TRUE
)
# train the model for each parameter combination in the grid,
# using CV to evaluate
xgb_train_1 = train(
x = as.matrix(df_train %>%
select(-SeriousDlqin2yrs)),
y = as.factor(df_train$SeriousDlqin2yrs),
trControl = xgb_trcontrol_1,
tuneGrid = xgb_grid_1,
method = "xgbTree"
)
# scatter plot of the AUC against max_depth and eta
ggplot(xgb_train_1$results, aes(x = as.factor(eta), y = max_depth, size = ROC, color = ROC)) +
geom_point() +
theme_bw() +
scale_size_continuous(guide = "none")
সর্বশেষে, তোমাদের মধ্যে বৈচিত্র উপর AUC জন্য bubbleplot তৈরি করতে পারেন eta
এবং max_depth
: