Ich versuche, die Parameter für ein GLM-Boost-Modell zu tunen. Laut der Caret package documentation zu diesem Modell gibt es 2 Parameter, die eingestellt werden können, Mstop und Prune.R Caret: Tuning GLM Boost Prune Parameter
library(caret)
library(mlbench)
data(Sonar)
set.seed(25)
trainIndex = createDataPartition(Sonar$Class, p = 0.9, list = FALSE)
training = Sonar[ trainIndex,]
testing = Sonar[-trainIndex,]
### set training parameters
fitControl = trainControl(method = "repeatedcv",
number = 10,
repeats = 10,
## Estimate class probabilities
classProbs = TRUE,
## Evaluate a two-class performances
## (ROC, sensitivity, specificity) using the following function
summaryFunction = twoClassSummary)
### train the models
set.seed(69)
# Use the expand.grid to specify the search space
glmBoostGrid = expand.grid(mstop = c(50, 100, 150, 200, 250, 300),
prune = c('yes', 'no'))
glmBoostFit = train(Class ~ .,
data = training,
method = "glmboost",
trControl = fitControl,
tuneGrid = glmBoostGrid,
metric = 'ROC')
glmBoostFit
Der Ausgang ist die folgende:
Boosted Generalized Linear Model
188 samples
60 predictors
2 classes: 'M', 'R'
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 10 times)
Summary of sample sizes: 169, 169, 169, 169, 170, 169, ...
Resampling results across tuning parameters:
mstop ROC Sens Spec ROC SD Sens SD Spec SD
50 0.8261806 0.764 0.7598611 0.10208114 0.1311104 0.1539477
100 0.8265972 0.729 0.7625000 0.09459835 0.1391250 0.1385465
150 0.8282083 0.717 0.7726389 0.09570417 0.1418152 0.1382405
200 0.8307917 0.714 0.7769444 0.09484042 0.1439011 0.1452857
250 0.8306667 0.719 0.7756944 0.09452604 0.1436740 0.1535578
300 0.8278403 0.728 0.7722222 0.09794868 0.1425398 0.1576030
Tuning parameter 'prune' was held constant at a value of yes
ROC was used to select the optimal model using the largest value.
The final values used for the model were mstop = 200 and prune = yes.
Der prune Parameter konstant gehalten wird (Tuning parameter 'prune' was held constant at a value of yes
), obwohl die glmBoostGrid
enthält auch prune == no
. Ich habe einen Blick auf die mboost
Paket-Dokumentation unter der boost_control
Methode und nur die mstop
Parameter ist zugänglich, so wie der prune
Parameter mit der tuneGrid
Parameter der train
Methode abgestimmt werden kann?
Danke Phiver, ich bleibe dran für Ihr Feedback von Github! – Mesmer
Ich habe die Antwort von topepo auf [github] gesehen (https://github.com/topepo/caret/issues/396) danke für die Frage. Der Parameter 'Prune' wird als einzelner Eintrag verwendet und kann nicht mit einem Vektor abgestimmt werden. Ich sollte versuchen, wie du es mit 2 Modellen getan hast, eines mit 'prune = no 'und das andere mit' prune = yes', um zu prüfen, ob es einen Unterschied gibt. – Mesmer