Caret и GBM: задача 1 не удалась - аргументы подразумевают разное количество строк

Я пытаюсь запустить GBM с помощью кода ниже:

library(caret)
library(doParallel)
detectCores()
registerDoParallel(detectCores() - 1)

set.seed(668)
in.train <- createDataPartition(y = dat$target, p = 0.80, list = T)

ctrl <- trainControl(method = 'cv', number = 2, classProbs = T, verboseIter = T,
                 summaryFunction = LogLossSummary2)

gbm.grid <- expand.grid(interaction.depth = 10,
                        n.trees = (2:7) * 50,
                        shrinkage = 0.1)

Sys.time()
set.seed(1234)
gbm.fit <- train(target ~., data = otto.new[in.train, ], 
                 method = 'gbm', distribution = 'multinomial', 
                 metric = 'LogLoss', maximize = F, 
                 tuneGrid = gbm.grid, trControl = ctrl,
                 n.minobsinnode = 4, bag.fraction = 0.9)
Sys.time()

Однако он терпит неудачу с ошибкой:

Error in { : 
task 1 failed - "arguments imply differing number of rows: 0, 24754"
In addition: Warning messages:
1: package ‘gbm’ was built under R version 3.0.3 
2: package ‘survival’ was built under R version 3.0.3 
3: package ‘plyr’ was built under R version 3.0.3 

Вот моя информация о сеансе:

> sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252     LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] splines   parallel  stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] plyr_1.8.1       gbm_2.1.1        survival_2.38-1  doParallel_1.0.8 iterators_1.0.7  foreach_1.4.2    data.table_1.9.4
[8] caret_6.0-41     ggplot2_1.0.1    Revobase_7.1.0   RevoMods_7.1.0   RevoScaleR_7.1.0 lattice_0.20-27  rpart_4.1-5     

loaded via a namespace (and not attached):
[1] BradleyTerry2_1.0-6 brglm_0.5-9         car_2.0-25          chron_2.3-45        class_7.3-12        codetools_0.2-11   
[7] colorspace_1.2-6    compiler_3.0.2      digest_0.6.8        e1071_1.6-4         grid_3.0.2          gtable_0.1.2       
[13] gtools_3.4.1        lme4_1.1-7          MASS_7.3-37         Matrix_1.1-5         mgcv_1.8-5          minqa_1.2.4        
[19] munsell_0.4.2       nlme_3.1-120        nloptr_1.0.4        nnet_7.3-9           pbkrtest_0.4-2      proto_0.3-10       
[25] quantreg_5.11       Rcpp_0.11.5         reshape2_1.4.1      scales_0.2.4            SparseM_1.6         stringr_0.6.2      
[31] tools_3.0.2        

Я заметил, что эта проблема возникает периодически и, кажется, уменьшается, когда я гарантирую, что мой набор данных кратен k-fold. (В приведенном выше случае мой набор данных имеет 49506 строк). Тем не менее, кажется, что время от времени это всплывает. Кто-нибудь еще сталкивался с этим и нашел способ предотвратить это?


person Eugene Yan    schedule 06.04.2015    source источник
comment
Это может быть что угодно. Предоставление воспроизводимого примера поможет получить ответ на ваш вопрос.   -  person topepo    schedule 17.04.2015


Ответы (2)


Я столкнулся с той же проблемой, когда понял, что в одной из моих строк есть «NA». Модель не делала для нее прогноза, и поэтому в ней отсутствовала 1 строка, когда я запускал прогноз(). После двух дней потраченного впустую времени я вменил NA и повторно запустил тот же сценарий. Работал нормально. Поэтому, пожалуйста, попробуйте ввести NA или нули в свои данные. (Кстати: у меня также были некоторые «нулевые значения», которые он считывал как факторы, поэтому, пожалуйста, ищите и их). Пожалуйста, дайте нам знать, если это решило проблему для вас или нет.

person CaretAut    schedule 23.04.2015

У меня была та же проблема, и я пытался восстановить модель gbm, которую я ранее построил - код работал, а затем перестал работать. Кроме того, R не запускался каждый раз, когда я пытался его запустить. Это завершит сеанс до его начала. Обычно он запускался со 2-го раза, но я пошел его запускать, и он не запускался несколько раз подряд, поэтому я следовал инструкциям здесь: https://support.rstudio.com/hc/en-us/articles/200534577-Resetting-RStudio-s-State< /а>

и переименовал мой файл rstudio-desktop. После того, как я сделал это, я смог запустить модель gbm. Из прочтения этого должно быть ясно, что я плохо представляю, почему это сработало, однако я бы не ожидал, что это сработает, если вы не получите сообщение об ошибке: Ошибка в {: задача 1 не выполнена - «аргументы подразумевают разное количество строк: 0, (некоторое число)

person David Vaillette    schedule 01.03.2017