Wybór funkcji i dostrajanie parametrów z karetką losowego lasu

12

Mam dane z kilkoma tysiącami funkcji i chcę dokonać rekurencyjnego wyboru funkcji (RFE), aby usunąć te nieinformacyjne. Robię to z karetką i RFE. Jednak zacząłem myśleć, jeśli chcę uzyskać najlepsze dopasowanie regresji (na przykład losowy las), kiedy powinienem przeprowadzić strojenie parametrów ( mtrydla RF)? Tak więc, jak rozumiem, Caret trenuje RF wielokrotnie w różnych podzbiorach funkcji ze stałym mottem. Przypuszczam, że optymalny mtrypowinien być znaleziony po zakończeniu wyboru funkcji, ale czy mtrywartość użyta przez daszek wpłynie na wybrany podzbiór funkcji? Oczywiście korzystanie z karetki przy niskim mtryjest znacznie szybsze.

Mam nadzieję, że ktoś mi to wyjaśni.

Dmitri
źródło
2
RF ma solidny wbudowany wybór funkcji - nie ma potrzeby używania RFE, więc można po prostu dostroić mtry i zrobić to.
Jewgienij

Odpowiedzi:

11

Jedną z rzeczy, które możesz chcieć przyjrzeć się, są regularne losowe lasy, które są specjalnie zaprojektowane do wyboru funkcji. W tym artykule wyjaśniono pojęcie i różnice między nimi a normalnymi losowymi lasami

Wybór funkcji za pomocą drzew regulowanych

Jest też pakiet RRF CRAN, który jest oparty na randomForest, który pozwoli ci łatwo wdrożyć je w R. Sam miałem szczęście z tą metodologią.

Jeśli chodzi o twoje początkowe pytanie, jedyną radą, jaką mogę udzielić, jest to, że jeśli masz dużo kolinearności, musisz użyć mniejszych rozmiarów drzew. Umożliwia to algorytmowi określenie ważności przy mniejszej interferencji od efektów kolinearności.

Tom.Rampley
źródło
1

Możesz być w stanie użyć caretFuncs czegoś takiego:

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)

Można również sprawdzić valSelRFpaczkę. Nie jestem pewien, czym różni się od regularized random forestwspomnianego tutaj.

Jerry T.
źródło