2016-08-03 3 views
1

データフレーム内の応答変数のベクトルの各要素にGAM(スプライン付き)をフィットさせる関数をlapply内に作成しました。最終的に検証のためにデータを列車/テストセットに分割し、さまざまなリサンプリングテクニックを使用したいので、mgcvまたはgamパッケージを直接使用するのではなく、モデルに合わせてcaretを使用することを選択しました。私はこのコードを実行するとキャレットで再サンプリングしないGAMメソッドで停止エラーが発生する

# Set resampling method 
    # tc <- trainControl(method = "boot", number = 100) 
    # tc <- trainControl(method = "repeatedcv", number = 10, repeats = 1) 
    tc <- trainControl(method = "none") 

    fm <- lapply(group, function(x) { 
    printFormula <- paste(x, "~", inf.factors) 
    inputFormula <- as.formula(printFormula) 
    # Partition input data for model training and testing 
    # dpart <- createDataPartition(mdata[,x], times = 1, p = 0.7, list = FALSE) 
    # train <- mdata[ data.partition, ] 
    # test <- mdata[ -data.partition, ] 

    cat("Fitting:", printFormula, "\n") 
    # gam(inputFormula, family = binomial(link = "logit"), data = mdata) 
    train(inputFormula, family = binomial(link = "logit"), data = mdata, method = "gam", 
     trControl = tc) 
}) 

が、私は次のエラーが表示されます:

Error in train.default(x, y, weights = w, ...) : 
    Only one model should be specified in tuneGrid with no resampling 

私は、コードを再実行する場合は今のところ、私は単純にそうLIKE「none」に設定trainControl方法を持っています

if (trControl$method == "none" && nrow(tuneGrid) != 1) 
    stop("Only one model should be specified in tuneGrid with no resampling") 

明らかにtrain機能があるため第二の条件、Bの失敗:caretはトレーニングプロセスを停止しているデバッグモードでは、私が見つけることができます私がtuning parameters for a GAM(スプライン付き)を見ているときは、機能の選択(興味がない、私はモデル内のすべての予測変数を保持したい)とその方法だけのオプションがあります。したがって、trainに電話すると、tuneGridデータフレームは含まれません。このようにモデルが失敗している理由はこれですか?どんなパラメータを提供し、tuneGridの外観は何ですか?

私はブートストラップやk倍CVを使用すると、モデルが正常に訓練されたと付け加えるべきですが、これらの再サンプリング方法は計算に時間がかかり、まだ使用する必要はありません。

この問題に関するお役に立てれば幸いです。そのモデルのために

答えて

2

、チューニンググリッドはselectパラメータの2以上の値になります(エラーメッセージが言うように)

> getModelInfo("gam", regex = FALSE)[[1]]$grid 
function(x, y, len = NULL, search = "grid") { 
    if(search == "grid") { 
     out <- expand.grid(select = c(TRUE, FALSE), method = "GCV.Cp") 
    } else { 
     out <- data.frame(select = sample(c(TRUE, FALSE), size = len, replace = TRUE), 
         method = sample(c("GCV.Cp", "ML"), size = len, replace = TRUE)) 
    } 
    out[!duplicated(out),] 
} 

をあなただけの単一のモデルを評価するためにtuneGrid = data.frame(select = FALSE, method = "GCV.Cp")のようなものを使用する必要があります。

+1

提案した調整パラメータを使用して、GAMモデルにうまくフィットできました。機能の選択が無効で、GCV.Cpを参照していることを理解しています。これは 'mgcv'パッケージの' gam'関数に渡されています。将来、ユーザーはチューニングパラメータのオプションについてどのようなソースを参照できますか? GitHubのウェブサイトでは、ドキュメンテーションは少なくともチューニングパラメータの潜在的なオプションにユーザをリンクさせることができると思います。それはちょうど私の2セントです。ご協力ありがとうございます、私は将来的にはより多くのことをするつもりです! – user2109092

関連する問題