2013-02-10 49 views
4

我嘗試使用R中插入符號封裝與「用戶自定義」性能指標幾個嵌套的交叉驗證的過程。我有各種各樣的問題,所以我拉了回來,看看是否有問題一個更開箱使用插入符號的,似乎我已經遇到了一個加字符和GBM錯誤

如果我運行以下命令:。

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 

) 

我的錯誤(或類似):

Error in { : 
task 1 failed - "arguments imply differing number of rows: 619, 381" 

wi th警告:

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 
) 
+0

我發現添加參數cv.folds = 1時會引發錯誤。應該將cv.folds傳遞給gbm,但由於某些原因導致錯誤。無論如何,cv.folds = 0是gbm的默認值(應該給出與cv.folds = 1相同的結果)。 – 2013-02-10 21:48:46

+1

處理疑似錯誤的常用方法是聯繫軟件包維護人員 – 2013-02-10 22:01:03

+0

發佈問題後,我找出錯誤來自哪裏,並將發送給Max Kuhn。 – 2013-02-11 01:24:42

回答

4

有兩個問題:通過cv.folds引起問題。另外,您不需要將結果轉換爲二進制數;這導致train認爲這是一個迴歸問題。 train函數背後的想法是消除與建模函數的不一致性,因此我們使用分類因子和迴歸數字。

0

只是爲了說明 - 儘管這個問題已經引起了答案說明的理由,也可以與舊版本的插入符號和GBM的發生該錯誤消息(如下)。我遇到了這個錯誤,並花了很多時間試圖找出問題後,我不得不升級到最新版本的脫字號(5.17-7)和gbm(2.1-0.1)。這些是迄今爲止在CRAN上的最新版本。

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