Как оптимизировать скорость пакета rpart для генерации деревьев решений - PullRequest
0 голосов
/ 15 апреля 2019

Rpart работает в течение четырех дней и не генерирует дерево решений для моих данных.Размер моего набора данных составляет 33 столбца на 200 043 строки (т.е. 33 непрерывных переменных, состоящих из 13 независимых переменных и 20 зависимых переменных)).Я использую метод anova в rpart для генерации дерева регрессии.Набор данных слишком большой?Есть ли способ, которым я могу написать свой код или пакеты, которые можно использовать для повышения скорости работы rpart относительно моего набора данных?Существуют ли альтернативные пакеты, которые могут обрабатывать большие наборы данных, такие как мой (при условии, что размер набора данных является проблемой)?

Сначала я запустил анализ на компьютере с 16 ГБ ОЗУ и получил сообщение об ошибке, указывающее, что R не может выделить массив / вектор размером 2,9 ГБ.Затем я получил доступ к гораздо более мощному компьютеру с 64 ГБ ОЗУ, и он работал четыре дня.Я попытался настроить аргументы функции / элементы управления, включая minsplit, minbucket и cp, но безрезультатно.Я еще не разобрал свой набор данных на куски для анализа, и я бы предпочел не делать этого, потому что это не будет несовместимо с типом анализа, который я пытаюсь выполнить.

В приведенном ниже коде dvnames - это вектор, содержащий 20 непрерывных зависимых переменных с 200 043 наблюдениями / точками данных или значениями каждая.ivnames - это выражение, которое складывается из 13 непрерывных независимых переменных.Поэтому код перебирает каждую зависимую переменную, последовательно проводя регрессию на основе суммы всех независимых переменных, чтобы сформировать соответствующий список моделей дерева решений.

### random forest and classification models
for (y in dvnames){
  form <- as.formula(paste(y, "~", ivnames1))
  CARTtreemodels[[y]] <- rpart(form, data = maindf, method = "anova", 
                               control = rpart.control(minsplit = 10000, minbucket = 10000, cp = 0.01))
  #control = rpart.control(minsplit = 2000, minbucket = 2000, cp = 0.001))
  RFtreemodels[[y]] <- randomForest(form, data = maindf, 
                                    improve = 0.01, doBest = TRUE, importance = TRUE, ntree = 1000)
}

Есть ли что-то, что я могу / должен изменить в этом коде, чтобы ускорить процесс?Являются ли пакеты, которые могут функционировать быстрее или ускорить процесс?Есть еще мысли?

...