2016-03-25 3 views
4

Я пытаюсь настроить параметры для модели повышения GLM. Согласно Caret package documentation относительно этой модели есть 2 параметра, которые можно отрегулировать, mstop и чернослив.R-каретка: настройка 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 

Выход заключается в следующем:

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. 

Параметр сливовый поддерживается постоянным (Tuning parameter 'prune' was held constant at a value of yes), хотя glmBoostGrid также содержит prune == no. Я взглянул на документацию пакета mboost по методу boost_control и доступен только параметр mstop, поэтому как можно настроить параметр с параметром метода train?

ответ

2

Разница loceted в этой части призывы к glmboost:

if (param$prune == "yes") { 
    out <- if (is.factor(y)) 
     out[mstop(AIC(out, "classical"))] 
    else out[mstop(AIC(out))] 
} 

Разница заключается в том, как рассчитывается АИК. Но при выполнении разнообразных тестов с glmboost в каретке у меня есть сомнения, если они ведут себя так, как ожидалось. Я создал проблему в github, чтобы убедиться, что мои подозрения верны. Я отредактирую свой ответ, если будет больше информации от разработчиков.

+0

Спасибо, phiver, я слежу за вашими отзывами от github! – Mesmer

+0

Я видел ответ от topepo на [github] (https://github.com/topepo/caret/issues/396), спасибо за просьбу. Параметр 'prune' используется как одна запись и не может быть настроен с помощью вектора. Я должен попробовать, как и в случае с двумя моделями: с «prune = no», а другой с «prune = yes», чтобы проверить, есть ли разница. – Mesmer

Смежные вопросы