2016-03-17 2 views
1

Я тренирую модель с использованием rf из пакета caret с использованием R (и Rstudio). Набор данных обучения представляет собой кадр данных с 76 тыс. Строк и 291 колос. Мой код выглядит следующим образом:Extreme long runtime для «rf» с использованием пакета Caret в R

library(caret) 

myTrControl <- trainControl(method = "repeatedcv", 
          number = 5, 
          repeats = 3, 
          p = 0.75, 
          classProbs = TRUE, 
          summaryFunction = twoClassSummary) 

set.seed(64) 
myRF <- train(x = myTrain[ , -c(1, 291)], 
       y = myTrain$TARGET, 
       data = myTrain, 
       method = "rf", 
       metric = "ROC", 
       maximize = TRUE, 
       trControl = myTrControl) 

Он работает 24 часа. Есть ли способ оценить, сколько времени это займет?

Я прочитал документацию caret и, вероятно, должен был установить verboseIter = TRUE в trainControl, чтобы получить информацию о том, что происходит во время вычисления. Я думаю, что нет «расчетного» способа запросить информацию о прогрессе, не так ли?

И третий вопрос: есть ли какие-либо другие параметры в пределах trainControl и train, которые я должен регулярно использовать для получения информации о расчете во время ее выполнения?

Спасибо!

+0

Sessioninfo() был бы более полезен для различения проблемы. Ваш набор функций очень велик, и вы можете захотеть сделать некоторые [выбор функций] (http://www.r-bloggers.com/feature-selection-using-the-caret-package/). Если вы запущены со всеми этими функциями, попробуйте [rfcv function] (http://www.inside-r.org/packages/cran/randomforest/docs/rfcv) в случайных лесах. Хотя, я все еще верю, что это займет некоторое время без выбора функции. Cheers, Cody –

+0

Спасибо, Коди. Я использовал функцию выбора, чтобы перейти к этому числу, но это правда, я все же мог применить 'rfcv' из пакета randomForest для выбора функции. – YamiOmar

ответ

2

Это связано с некоторыми факторами, за пределами 76 тыс. Записей и 291 колос.

Ваши настройки повторяются 3 раза, но поскольку сетка не указана, используется опция tunelength в поезде. Это имеет значение по умолчанию 3. Что происходит сейчас, так это то, что у вас есть 5-кратное cv, которое повторяется 3 раза, с настройкой 3 разных значений mtry. Таким образом, в общей сложности он будет тренировать 5 * 3 * 3 = 45 учебных занятий +, конечно, 45 раз тестирование на выезд. После этого он выполнит 1 окончательный набор тренировок на полном обучающем наборе, основанный на выборе параметров настройки после cv.

И дальше, отвечая на вопросы:

  1. Единственный способ оценить это запустить модель на другой машине и установить evertything 1, (repeatedcv, число = 1, повтор = 1, и в train, tunelength = 1) Это дает вам базовую оценку.
  2. verboseIter - это путь.