插入符号和GBM错误

时间:2013-02-10 21:04:30

标签: r

我正在尝试使用R中的插入包用于几个嵌套的交叉验证过程,其中包含“用户定义的”性能指标。我遇到了各种各样的问题,所以我退回去查看是否存在更多问题使用插入符号的盒子似乎我遇到了一个。

如果我运行以下内容:

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"

有警告:

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
)

2 个答案:

答案 0 :(得分:4)

有两个问题:传递cv.folds导致了问题。此外,您不需要将结果转换为二进制数;这会导致train认为这是一个回归问题。 train函数背后的想法是消除与建模函数的不一致性,因此我们使用分类因子和回归数字。

答案 1 :(得分:0)

仅供注意 - 尽管此问题是由答案中描述的原因引起的,但较旧版本的插入符号和gbm也可能出现错误消息(如下所示)。我遇到了这个错误,花了很多时间试图找出问题所在,结果证明我必须升级到最新版本的插入符号(5.17-7)和gbm(2.1-0.1)。这些是CRAN今天的最新版本。

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