簡體   English   中英

插入符號和 GBM 錯誤

[英]Caret and GBM Errors

我正在嘗試使用 R 中的caret包進行多個具有用戶定義性能指標的嵌套交叉驗證過程。 我遇到了各種各樣的問題,所以我回過頭來看看是否有更多開箱即用的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
)

有兩個問題:傳遞cv.folds導致了問題。 此外,您不需要將結果轉換為二進制數; 這導致train認為這是一個回歸問題。 train函數背后的想法是消除與建模函數的不一致,因此我們使用因子進行分類,使用數字進行回歸。

請注意 - 盡管此問題是由答案中描述的原因引起的,但舊版本的插入符號和 gbm 也可能出現錯誤消息(如下所示)。 我遇到了這個錯誤,在花了很多時間試圖找出問題所在之后,我不得不升級到最新版本的 caret (5.17-7) 和 gbm (2.1-0.1)。 這些是截至今天在 CRAN 上的最新版本。

Error in { : 
task 1 failed - "arguments imply differing number of rows: ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM