Seleção de recursos e ajuste de parâmetros com cursor para floresta aleatória

12

Eu tenho dados com alguns milhares de recursos e desejo fazer a seleção recursiva de recursos (RFE) para remover os não informativos. Eu faço isso com sinal de intercalação e RFE. No entanto, comecei a pensar, se quero obter o melhor ajuste de regressão (floresta aleatória, por exemplo), quando devo executar o ajuste de parâmetros ( mtrypara RF)? Isto é, como eu entendo acento circunflexo trens RF repetidamente em diferentes subconjuntos recurso com uma mtry fixo. Suponho que o ideal mtryseja encontrado depois que a seleção de recurso for concluída, mas o mtryvalor que o cursor usa influencia o subconjunto de recursos selecionado? Usar sinal de intercalação com baixa mtryé muito mais rápido, é claro.

Espero que alguém possa me explicar isso.

Dmitri
fonte
2
O RF possui uma seleção robusta de recursos internos - não há necessidade de usar o RFE, para que você possa simplesmente ajustar o mtry e acabar com ele.
Yevgeny

Respostas:

11

Uma coisa que você pode querer considerar são florestas aleatórias regularizadas, projetadas especificamente para a seleção de recursos. Este artigo explica o conceito e como eles diferem das florestas aleatórias normais

Seleção de recursos por meio de árvores regularizadas

Há também um pacote CRAN RRF que é construído sobre o randomForest que permitirá implementá-los facilmente em R. Eu tive sorte com essa metodologia.

Com relação à sua pergunta inicial, o único conselho que posso dar é que, se você tem muita colinearidade, precisa usar tamanhos de árvores menores. Isso permite que o algoritmo determine importância com menos interferência dos efeitos da colinearidade.

Tom.Rampley
fonte
1

Você pode usar caretFuncs Algo assim:

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)

Além disso, pode-se verificar o valSelRFpacote. Não tenho certeza de como difere do regularized random forestmencionado aqui.

Jerry T
fonte