Выбор функций и настройка параметров с помощью каретки для случайного леса


12

У меня есть данные с несколькими тысячами функций, и я хочу сделать рекурсивный выбор функций (RFE), чтобы удалить неинформативные. Я делаю это с помощью карета и РСЕ. Однако я начал думать, если я хочу получить наилучшее соответствие регрессии (например, случайный лес), когда мне следует выполнить настройку параметров ( mtryдля RF)? То есть, как я понимаю, карета многократно тренирует RF на разных подмножествах функций с фиксированным mtry. Я полагаю, что оптимум mtryдолжен быть найден после завершения выбора функции, но повлияет ли mtryзначение, которое использует каретка, на выбранный набор функций? Использование каретки с низкой mtryскоростью, конечно, намного быстрее.

Надеюсь, кто-нибудь сможет мне это объяснить.


2
RF имеет надежный встроенный выбор функций - нет необходимости использовать RFE, так что можно просто настроить mtry и покончить с этим.
Евгений

Ответы:


11

Одна вещь, которую вы, возможно, захотите рассмотреть, - это упорядоченные случайные леса, специально разработанные для выбора объектов. Эта статья объясняет концепцию, и как они отличаются от обычных случайных лесов

Выбор функций через регулярные деревья

Также есть пакет CRAN RRF , построенный на randomForest, который позволит вам легко реализовать их в R. Мне самому повезло с этой методологией.

Что касается вашего первоначального вопроса, единственный совет, который я могу дать, это то, что если у вас много коллинеарности, вам нужно использовать дерево меньшего размера. Это позволяет алгоритму определять важность с меньшими помехами от эффектов коллинеарности.


1

Вы можете использовать caretFuncs что-то вроде этого:

myRFE <- caretFuncs
myRFE$summary <- twoClassSummary  (default is defaultSummary)

rctrl <- rfeControl(method='repeatedcv', repeats=5, number=10,
                   functions=myRFE)

tctrl <- trainControl(method = "cv",
                      classProbs = TRUE,
                      summaryFunction = twoClassSummary)

rfeObj = rfe(x,y,sizes=seq(1,ncol(x),2),
             rfeControl=rctrl,  
             # to be passed to train()
             method='rf',
             importance=T,  # do not forget this
             ntree=1000,
             metric = "ROC",
             tuneLength = 10,
             # mtry=c(1,3,5,50),
             # specify the exact mtry, or tuneLength
             # can auto truncate the grid to minimal sizes (with or without warning)
             # p <- ncol(x) ... if (mtry < 1 || mtry > p) warning("invalid try: reset to within valid range") try <- max(1, min(p, round(try))) 
             trControl=tctrl)

Также можно проверить valSelRFпакет. Не уверен, чем он отличается от regularized random forestупомянутого здесь.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.