2017-12-14 39 views
3

caret packageを使用して、ロジスティック回帰モデルをRに収めようとしています。私は次のことを行っています:Rキャレットパッケージのロジスティック回帰チューニングパラメータグリッド?

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は、sklearnで使われているパラメータなので、Cと仮定しました。現在、次のエラーが表示されています -

Error: The tuning parameter grid should have columns parameter

これを修正する方法についてご意見はありますか?

+0

ここを参照してください、 '' modelLookup( "GLM")を試してみてください:https://stackoverflow.com/questions/43970831/the-tuning-parameter-in-glm-vs-rf/44010331#44010331 –

+0

それは、 'tuneLength'を指定し、グリッドの指定に替わるのではなく、変更することを決めた'キャレット 'のパラメータを見ることから始めるのも良い考えです。 – dmi3kno

+0

'glm'メソッドにチューニングパラメータがありませんhttps://topepo.github.io/caret/train-models-by-tag.html、そこにはダミーのチューニングパラメータがあり、何もしません。 – jmuhlenkamp

答えて

1

ウェブサイトの場合、チューニングパラメータglmcaretの範囲内にありません。

enter image description here

私たちは、簡単に、これはいくつかの基本的なtrain呼び出しをテストすることによりケースであることを確認することができます。まず、Webブックごとに調整パラメータ(cp)を持つメソッド(rpart)から始めましょう。

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. 
関連する問題