Wie funktioniert die Kreuzvalidierung im Zug (Caret) genau?

8

Ich habe eine ganze Reihe von Beiträgen zum Caret- Paket gelesen und interessiere mich speziell für die Zugfunktion . Ich bin mir jedoch nicht ganz sicher, ob ich richtig verstanden habe, wie die Zugfunktion funktioniert.

Um meine aktuellen Gedanken zu veranschaulichen, habe ich ein kurzes Beispiel zusammengestellt.

  • Zunächst wird ein Parameterraster angegeben. Angenommen , ich verwende die Methode gbm. Dementsprechend könnte das Parameterraster für mein Modell folgendermaßen aussehen:

    grid <- expand.grid( .n.trees=seq(10,50,10), .interaction.depth=seq(1,4,1), .shrinkage=c(0.01,0.001), .n.minobsinnode=seq(5,20,5))
  • Anschließend werden die Steuerparameter für train (trainControl) definiert. Ich würde gerne wissen, ob meine Gedanken zur Kreuzvalidierung mit dem Zug richtig sind, und daher verwende ich in diesem Beispiel Folgendes:

    train_control <- trainControl('cv',10)
  • Zuletzt wird die Zugfunktion ausgeführt. Zum Beispiel:

    fit <- train(x,y,method="gbm",metric="Kappa",trControl=train_control,tuneGrid=grid)

Ich gehe davon aus, dass der Zug funktioniert:

  1. Im obigen Beispiel gibt es 160 (5 * 4 * 2 * 4) mögliche Parameterkombinationen
  2. Für jede Parameterkombination führt der Zug eine 10-fache Kreuzvalidierung durch
  3. Für jede Parameterkombination und für jede Falte (von den 10 Falten) wird die Leistungsmetrik (in meinem Beispiel Kappa) berechnet (in meinem Beispiel bedeutet dies, dass 1600 Kappas berechnet werden).
  4. Für jede Parameterkombination wird der Mittelwert der Leistungsmetrik über die 10 Falten berechnet
  5. Die Parameterkombination mit der besten mittleren Leistungsmetrik wird als die besten Parameter für das Modell angesehen

Meine Frage ist einfach, sind meine aktuellen Gedanken richtig ?

Tomas
quelle

Antworten:

8

Ja du hast Recht. Wenn Sie sich die Details ansehen möchten:

  • Zur Beobachtung der Ergebnisse über die Parametrisierung und des ausgewählten endgültigen Modells können Sie fit$resultsmit fit$bestTuneund vergleichen fit$finalModel(bei gleicher Leistung wird das weniger komplexe Modell ausgewählt).
  • Informationen zur Beobachtung der Leistung der endgültigen Modellparametrisierung pro Partition und zum erneuten Abtasten finden Sie unter fit$resample. Beachten Sie, dass Sie beim Ändern des Werts für returnResampin ?trainControlkonfigurieren können, welche Ergebnisse hier angezeigt werden (z. B. wenn Sie diese auch für andere als den endgültig ausgewählten Parametersatz anzeigen möchten). In der Regel sollte der Standardwert jedoch in Ordnung sein.
  • Für die einzelnen Prognosen Beobachtung während CV getan Sie aktivieren können savePredictions = Tin ?trainControl, dann sehen Sie fit$pred, zB als table(fit$pred$Resample).
geekoverdose
quelle