Gibt es eine Möglichkeit, die Funktion zur Parameteranpassung (Gitter) in CARET zu deaktivieren?

15

CARET verwendet automatisch ein vorab festgelegtes Abstimmungsraster, um verschiedene Modelle zu erstellen, bevor ein endgültiges Modell ausgewählt wird, und trainiert dann das endgültige Modell mit den vollständigen Trainingsdaten. Ich kann mein eigenes Stimmraster mit nur einer Kombination von Parametern versorgen. Aber auch in diesem Fall "wählt" CARET das beste Modell unter den Abstimmungsparametern "aus" (obwohl es in diesem Fall nur ein Modell gibt) und passt dann das endgültige Modell an alle Trainingsdaten an. Dies ist ein zusätzlicher Schritt, den ich vermeiden möchte.

Wie überspringe ich einfach den Modellsuchschritt über Variationen im Abstimmungsraster und zwinge CARET, auf allen Trainingsdaten aufzubauen (außer die zugrunde liegende Modellbibliothek direkt aufzurufen)?

Ram Ahluwalia
quelle
1
Die Frage ist ziemlich unklar, was wahrscheinlich erklärt, warum Sie Antworten auf verschiedene Fragen erhalten haben, nämlich 1) Wie kann ich Caret anweisen, die Modellvalidierung UND -optimierung zu überspringen? und 2) Wie deaktiviere ich nur die Modelloptimierung?
Johan Larsson

Antworten:

17

Sie können angeben , method="none"in trainControl. Beispielsweise:

train(Species ~ ., data=iris, method="rf", tuneGrid=data.frame(mtry=3),
  trControl=trainControl(method="none"))

Ich bin nicht sicher, wann dies implementiert wurde.

Peyton
quelle
9

Am besten ist es, den tuneGrid-Datenrahmen explizit anzugeben. Beispielsweise verfügt eine zufällige Gesamtstruktur nur über einen Optimierungsparameter, 'mtry', der die Anzahl der für jeden Baum ausgewählten Features steuert.

Um mtry auf einen bestimmten Wert zu setzen, können Sie den Standardwert randomForest (? RandomForest) wählen.

model <- train(x = X, y = Y, method = 'rf', tuneGrid = data.frame(.mtry = M))

Wobei M der einzige Wert des Stimmparameters ist, den Sie verwenden möchten.

Führen Sie für mehrere Tuning-Parameter Folgendes aus:

tuneGrid = data.frame(.par1 = P1, .par2 = P2, .par3 = P3)
Brent
quelle
Willkommen auf unserer Seite, Brent! Vielen Dank, dass Sie diese alte Frage beantwortet haben.
Whuber
4
Der folgende Vorschlag method="none"ist die bessere Lösung.
topepo
1

Ich denke nicht, dass es möglich ist (zumindest war es vor einigen Versionen nicht möglich). Man kann die Auswirkungen auf die Leistung reduzieren, indem man nur eine einzige Resampling-Partition in den Trainingsdaten einrichtet (aber Caret würde ein Modell immer noch zweimal trainieren).

Das klingt nach einem nützlichen Feature, also würde ich den Autor des Pakets anpingen.

Jewgeni
quelle
Entschuldigung, diese Antwort ist jetzt veraltet
smci