Сетка параметров настройки логистической регрессии в пакете R Caret?

Я пытаюсь подогнать модель логистической регрессии в R, используя класс caret package. Я сделал следующее:

model <- train(dec_var ~., data=vars, method="glm", family="binomial",
                 trControl = ctrl, tuneGrid=expand.grid(C=c(0.001, 0.01, 0.1, 1,10,100, 1000)))

Однако я не уверен, каким должен быть параметр настройки для этой модели, и мне трудно его найти. Я предположил, что это C, потому что C — это параметр, используемый в sklearn. В настоящее время я получаю следующую ошибку -

Ошибка: сетка параметров настройки должна иметь параметр столбцов

Есть ли у вас какие-либо предложения о том, как это исправить?


person Jane Sully    schedule 14.12.2017    source источник
comment
Попробуйте modelLookup("glm"), см. здесь: stackoverflow.com/questions/43970831/   -  person Marco Sandri    schedule 15.12.2017
comment
Также рекомендуется начать с указания tuneLength и наблюдения за параметрами, которые caret решил изменить, вместо того, чтобы углубляться в спецификацию сетки.   -  person dmi3kno    schedule 19.12.2017
comment
glm не имеет параметров настройки topepo.github.io/caret/train- models-by-tag.html, тот, что там, является фиктивным параметром настройки, он ничего не делает.   -  person jmuhlenkamp    schedule 12.01.2018


Ответы (1)


Согласно веб-книге Макса Куна - ищите method = 'glm' здесь, там нет параметра настройки glm в пределах caret.

введите описание изображения здесь

Мы можем легко убедиться, что это так, протестировав несколько основных вызовов train. Прежде всего, давайте начнем с метода (rpart), у которого есть параметр настройки (cp) для веб-книги.

library(caret)
data(GermanCredit)

# Check tuning parameter via `modelLookup` (matches up with the web book)
modelLookup('rpart')
#  model parameter                label forReg forClass probModel
#1 rpart        cp Complexity Parameter   TRUE     TRUE      TRUE

# Observe that the `cp` parameter is tuned
set.seed(1)
model_rpart <- train(Class ~., data=GermanCredit, method='rpart')
model_rpart
#CART 

#1000 samples
#  61 predictor
#   2 classes: 'Bad', 'Good' 

#No pre-processing
#Resampling: Bootstrapped (25 reps) 
#Summary of sample sizes: 1000, 1000, 1000, 1000, 1000, 1000, ... 
#Resampling results across tuning parameters:

#  cp          Accuracy   Kappa    
#  0.01555556  0.7091276  0.2398993
#  0.03000000  0.7025574  0.1950021
#  0.04444444  0.6991700  0.1316720

#Accuracy was used to select the optimal model using  the largest value.
#The final value used for the model was cp = 0.01555556.

Мы видим, что параметр cp был настроен. Теперь попробуем glm.

# Check tuning parameter via `modelLookup` (shows a parameter called 'parameter')
modelLookup('glm')
#  model parameter     label forReg forClass probModel
#1   glm parameter parameter   TRUE     TRUE      TRUE

# Try out the train function to see if 'parameter' gets tuned
set.seed(1)
model_glm <- train(Class ~., data=GermanCredit, method='glm')
model_glm
#Generalized Linear Model 

#1000 samples
#  61 predictor
#   2 classes: 'Bad', 'Good' 

#No pre-processing
#Resampling: Bootstrapped (25 reps) 
#Summary of sample sizes: 1000, 1000, 1000, 1000, 1000, 1000, ... 
#Resampling results:

#  Accuracy   Kappa    
#  0.7386384  0.3478527

В этом случае с glm выше настройка параметров не выполнялась. Судя по моему опыту, parameter с именем parameter — это просто заполнитель, а не реальный параметр настройки. Как показано в следующем коде, даже если мы попытаемся заставить его настроить parameter, он в основном выдает только одно значение.

set.seed(1)
model_glm2 <- train(Class ~., data=GermanCredit, method='glm',
                    tuneGrid=expand.grid(parameter=c(0.001, 0.01, 0.1, 1,10,100, 1000)))
model_glm2
#Generalized Linear Model 

#1000 samples
#  61 predictor
#   2 classes: 'Bad', 'Good' 

#No pre-processing
#Resampling: Bootstrapped (25 reps) 
#Summary of sample sizes: 1000, 1000, 1000, 1000, 1000, 1000, ... 
#Resampling results across tuning parameters:

#  Accuracy   Kappa      parameter
#  0.7386384  0.3478527  0.001    
#  0.7386384  0.3478527  0.001    
#  0.7386384  0.3478527  0.001    
#  0.7386384  0.3478527  0.001    
#  0.7386384  0.3478527  0.001    
#  0.7386384  0.3478527  0.001    
#  0.7386384  0.3478527  0.001    

#Accuracy was used to select the optimal model using  the largest value.
#The final value used for the model was parameter = 0.001.
person jmuhlenkamp    schedule 12.01.2018