Подтвердить что ты не робот

Проблема с randomForest & long vectors

Я запускаю случайный лес в наборе данных с 8 числовыми столбцами (предикторами) и 1 фактором (результатом). В наборе данных имеется 1,2 М строк. Когда я это сделаю:

randomForest(outcome.f ~ a + b + c + d + e + f + g + h,data=mdata)), я получаю сообщение об ошибке:

"Error in randomForest.default(m, y, ...) : 
 long vectors (argument 26) are not supported in .Fortran"

Есть ли способ предотвратить это? Я не понимаю, почему пакет (по-видимому) пытается выделить вектор длины 2 ^ 31-1. Я использую Mac OS X 10.9.2 с Intel Core i7 (в случае, если это имеет значение для архитектуры).

Информация о сеансе

R version 3.1.0 (2014-04-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

other attached packages:
[1] randomForest_4.6-7

loaded via a namespace (and not attached):
[1] tools_3.1.0
4b9b3361

Ответ 1

Никогда не запускайте randomforest со слишком большим количеством строк в обучающем наборе.

rf1 <- randomForest(Outcome ~ ., train[1:600000,], ntree=500, norm.votes=FALSE, do.trace=10,importance=TRUE)
rf2 <- randomForest(Outcome ~ ., train[600001:1200000,], ntree=500, norm.votes=FALSE, do.trace=10,importance=TRUE)
rf.combined <- combine(rf1,rf2)

Если вы по-прежнему получаете ошибку, попробуйте уменьшить размер обучающего набора (например, 500000 или 100000), разделите на rf1, rf2 и rf3, а затем объедините их. Надеюсь, что это поможет.

Ответ 2

Вы также можете уменьшить количество деревьев (ntree).

Ответ 3

Я считаю, что необходимо установить связь с тем, что если вы используете 64-битную версию R, наличие обучающего набора или слишком большого размера дерева запускает некоторый код c, который совместим только с 32-битной версией. Таким образом, уменьшить размер дерева и размер обучения, чтобы компенсировать.

Ответ 4

Я только что высветил эту ошибку, потому что мой набор данных "y" был на самом деле NULL, так что помните об этом и проверьте и убедитесь, что ваш вектор y не пуст.

Ответ 5

У меня была эта проблема раньше, и она была решена с помощью proximity = FALSE. Таким образом, матрица близости не вычисляется, и R может завершить процесс