Funktionsauswahl und Parametereinstellung mit Caret für zufällige Gesamtstruktur


12

Ich habe Daten mit einigen tausend Features und möchte eine rekursive Feature-Auswahl (RFE) durchführen, um nicht informative zu entfernen. Ich mache das mit Caret und RFE. Ich begann jedoch zu überlegen, wann ich die Parameterabstimmung ( mtryfür RF) durchführen soll, wenn ich die beste Regressionsanpassung erhalten möchte (z. B. zufällige Gesamtstruktur). Das heißt, wie ich verstehe, trainiert Caret wiederholt RF auf verschiedenen Feature-Subsets mit einem festen Mtry. Ich nehme an, das Optimum mtrysollte gefunden werden, nachdem die Merkmalsauswahl abgeschlossen ist. Wird der von Caret verwendete mtryWert die ausgewählte Teilmenge von Merkmalen beeinflussen? Die Verwendung von Caret mit Low ist natürlich viel schneller.mtry

Hoffe jemand kann mir das erklären.


2
RF verfügt über eine robuste integrierte Funktionsauswahl - RFE muss nicht verwendet werden, sodass Sie einfach mtry einstellen und damit fertig werden können.
Jewgeni

Antworten:


11

Eine Sache, die Sie vielleicht untersuchen möchten, sind regulierte zufällige Gesamtstrukturen, die speziell für die Auswahl von Features entwickelt wurden. In diesem Artikel wird das Konzept erläutert und wie sie sich von normalen zufälligen Wäldern unterscheiden

Funktionsauswahl über regulierte Bäume

Es gibt auch ein CRAN-Paket RRF , das auf randomForest aufbaut und es Ihnen ermöglicht, sie einfach in R zu implementieren. Ich hatte selbst viel Glück mit dieser Methode.

In Bezug auf Ihre erste Frage kann ich nur raten, dass Sie bei großer Kollinearität kleinere Baumgrößen verwenden müssen. Dies ermöglicht es dem Algorithmus, die Wichtigkeit mit weniger Interferenz durch Kollinearitätseffekte zu bestimmen.


1

Möglicherweise können Sie Folgendes verwenden 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)

Man kann auch das valSelRFPaket überprüfen . Ich bin mir nicht sicher, wie es sich von dem regularized random foresthier erwähnten unterscheidet .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.