Вибір функцій та налаштування параметрів з оберегом для випадкових лісів


12

У мене є дані з кількома тисячами функцій, і я хочу зробити рекурсивний вибір функцій (RFE), щоб видалити неінформативні. Я роблю це з каретою та RFE. Однак я почав думати, якщо я хочу отримати найкращу регресію (наприклад, випадковий ліс), коли мені слід виконати налаштування параметрів ( mtryдля РФ)? Тобто, наскільки я розумію, карет тренується РФ неодноразово на різних підмножинах з фіксованою мтри. Я припускаю, що оптимум mtryслід знайти після завершення вибору функції, але чи вплине mtryзначення, яке використовує карет, на вибраний підмножина функцій? Звичайно, використання карети з низьким mtryнабагато швидше.

Сподіваюся, хтось може мені це пояснити.


2
У РФ є надійний вбудований вибір функцій - не потрібно використовувати RFE, щоб можна було просто настроїти mtry і зробити це з ним.
Євген

Відповіді:


11

Одне, на що ви можете заглянути, - це регульовані випадкові ліси, розроблені спеціально для вибору особливостей. У цій роботі пояснюється поняття та чим вони відрізняються від звичайних випадкових лісів

Вибір особливостей через регульовані дерева

Там також пакет CRAN СБР , який будують на 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.