Arayüz için yana xgboost
içinde caret
son zamanlarda değişti, burada kullanmanın tam yorumladı açıklayan yönergeler içerir bir script caret
ayarlamak için xgboost
hiper parametreler.
Bunun için Kaggle yarışmasının "Bana Biraz Kredi Ver" yarışmasının eğitim verilerini kullanacağım .
1. Bir xgboost
modelin takılması
Bu bölümde biz:
xgboost
keyfi hiperparametreleri olan bir modele sığabilecek
- Çapraz doğrulama (
xgb.cv
) kullanarak kaybı (AUC-ROC) değerlendirin
- Eğitim ve test değerlendirme metriklerini çizin
İşte bunu yapmak için bazı kodlar.
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()
AUC'nin eğitimine karşı sınava bakışı şöyle:
2. Hiperparametre kullanarak arama train
Hiperparametre araması için aşağıdaki adımları uygularız:
data.frame
eğitimli modeller için istediğimiz benzersiz bir kombinasyon kombinasyonunu yarattık .
- Çapraz doğrulama parametreleri de dahil olmak üzere her modelin eğitimi için geçerli olan kontrol parametrelerini ve AUC'nin hesaplanabilmesi için olasılıkların hesaplandığını belirtin
- Her model için AUC'yi kaydederek her parametre birleşimi için modelleri çapraz doğrulayın ve eğitin.
İşte bunun nasıl yapılacağını gösteren bir kod.
# 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")
Son olarak, varyasyonları üzerinde AUC için bubbleplot oluşturabilir eta
ve max_depth
: