4

caretユーザー定義のパフォーマンスメトリックを使用して、いくつかのネストされた相互検証プロセスにRのパッケージを使用しようとしています。私はさまざまな問題を抱えていたので、すぐに使用できる問題がないかどうかを確認するために引き返しましたが、問題が発生したcaretようです。

私が以下を実行した場合:

install.packages("caret")
install.packages("gbm")
library(caret)
library(gbm)


data(GermanCredit)
GermanCredit$Class<-ifelse(GermanCredit$Class=='Bad',1,0)



gbmGrid <- expand.grid(.interaction.depth = 1,
                       .n.trees = 150,
                       .shrinkage = 0.1)


  
   gbmMOD <- train(Class~., data=GermanCredit
                ,method = "gbm",
             tuneGrid= gbmGrid,
                distribution="bernoulli",
                bag.fraction = 0.5, 
                train.fraction = 0.5, 
                n.minobsinnode = 10, 
                cv.folds = 1, 
                keep.data=TRUE,
                verbose=TRUE
                
)

エラー(または同様の)が発生します:

{:タスク1のエラーが失敗しました-「引数は行数が異なることを意味します:619、381」

警告付き:

1: In eval(expr, envir, enclos) :
  model fit failed for Resample01: interaction.depth=1, n.trees=150, shrinkage=0.1

しかし、gbmルーチンだけを実行すると、すべてが正常に終了します。

gbm1 <- gbm(Class~., data=GermanCredit,
            distribution="bernoulli",
            n.trees=150, # number of trees
            shrinkage=0.10, 
            interaction.depth=1, 
            bag.fraction = 0.5,
            train.fraction = 0.5, 
            n.minobsinnode = 10, 
            cv.folds = 1, 
            keep.data=TRUE, 
            verbose=TRUE
)
4

2 に答える 2

4

2 つの問題がありました: パスcv.foldsが問題を引き起こしました。また、結果を 2 進数に変換する必要はありません。これによりtrain、回帰の問題であると考えられます。関数の背後にある考え方trainは、モデリング関数との不一致を滑らかにすることです。そのため、分類には因子を使用し、回帰には数値を使用します。

于 2013-08-05T12:48:07.150 に答える