Gibt es eine Möglichkeit, mit der Boosted Tree-Plattform eine k-fache Kreuzvalidierung durchzuführen?
Mir ist zwar klar, dass dies im Rahmen eines Modellscreenings möglich ist, ich muss jedoch mit dem k-fachen Wert hypertunen, der die maximale Leistung bietet. Gibt es also statt des Modellscreenings eine Möglichkeit, eine k-fache Kreuzvalidierung mit Boosted Tree Predictive Modeling durchzuführen, bei der ich auch andere Parameter hypertunen kann?
Vielen Dank, dass Sie sich die Zeit genommen haben, sich bei mir zu melden.
Nisha
Ich würde versuchen, die XGBoost-App zu verwenden, wenn Sie K-fold und Boosted Tree verwenden möchten.
XGBoost-Add-In für JMP Pro - JMP-Benutzer-Community
Steve
Hallo @NishaKumar2023 ,
Sie können beim Anpassen Ihrer Hyperparameter eine K-fach-Kreuzvalidierung verwenden, aber das funktioniert nicht genau so, wie Sie es vielleicht beabsichtigen. Hier ist die Methodik:
- Erstellen Sie eine Validierungsspalte mit K-Falten (entweder fest oder mit einer Formel, abhängig von Ihren Zielen und Anforderungen an die Reproduzierbarkeit): Starten Sie die Plattform „Validierungsspalte erstellen“ (jmp.com).
Stellen Sie sicher, dass die Aufteilung Ihrer Daten in Falten repräsentativ und ausgewogen ist, indem Sie eine Schichtung verwenden, oder dass Sie die Einschränkung/Duplikation Ihrer Daten durch die Verwendung einer Gruppierung berücksichtigen (z. B. die gleiche ID in der gleichen Falte).
- Öffnen oder erstellen Sie eine Tuning-Datentabelle für den Boosted Tree (oder eine andere Plattform), die Sie starten möchten. Ich habe in Kopie ein Beispiel für den Boosted Tree hinzugefügt, aber Sie können andere Tuning-Tabellen von @SDF1 in diesem Beitrag finden: Fehlfunktion im Bootstrap Forest mit Tuning Design Table?
- Geben Sie beim Starten des Boosted Tree (oder einer anderen Modellierungsplattform) Ihre Eingaben und die Antwort auf das Modell an und verwenden Sie die Validierungsspalte „K-Falten“ im Validierungsfenster (hier im Mushroom JMP-Datensatz):

- Es öffnet sich ein neues Fenster. Aktivieren Sie „Tuning-Tabelle verwenden“ und wählen Sie dann Ihre bereits geöffnete Tuning-Tabelle aus:

- Anschließend erhalten Sie die Ergebnisse der am besten abgestimmten Modelle:

Beachten Sie, dass diese Methode nicht für die K-fach-Kreuzvalidierung geeignet ist, da die Verwendung von Tuning-Tabellen eine Aufteilung Ihrer Daten in nur 3 Sätze bedeutet:
- Trainingsset: Wird für das eigentliche Training des/der Modell(s) verwendet.
- Validierungssatz: Wird für die Modelloptimierung (z. B. Feinabstimmung der Hyperparameter, Auswahl von Merkmalen/Schwellenwerten usw.) und die Modellauswahl verwendet.
- Testsatz: Wird zur Generalisierung und prädiktiven Leistungsbewertung des ausgewählten Modells anhand neuer/ungesehener Daten verwendet.
Wenn Sie also in Schritt 1 eine 5-fache Kreuzvalidierung angeben, werden nur die ersten 3 Falten als Trainings-, Validierungs- und Testsätze verwendet, nicht wirklich als 5-fache Kreuzvalidierungstechnik. Um eine Kreuzvalidierung wie von Ihnen beabsichtigt durchzuführen, benötigen Sie eine verschachtelte Kreuzvalidierung: eine innere Kreuzvalidierung zum Optimieren der Hyperparameter und eine äußere Kreuzvalidierung zum Bewerten der Robustheit der gefundenen Hyperparameterwerte, die nur in der Model Screening-Plattform verfügbar ist und keine Tuning-Tabellen zum Optimieren der Hyperparameter akzeptiert (da das Ziel dieser Plattform darin besteht, die vielversprechendsten Algorithmen unter einer Vielzahl von Modelltypen zu prüfen und nicht zu optimieren):

Soweit ich weiß, ist dies in JMP nicht (direkt) möglich.
Sie können aber trotzdem die K-fach-Kreuzvalidierung auf dem „Standard“-Boosted Tree verwenden oder andere Validierungstechniken ausprobieren, indem Sie der oben beschriebenen Methode folgen (aber eine normale Formelvalidierungsspalte mit 3 Sätzen erstellen) und eine Simulation auf dem optimierten Modell anwenden, um seine Robustheit und seinen Nutzen im Vergleich zu einem nicht optimierten Modell zu beurteilen:

Sie können sehen, dass die Standardwerte der Hyperparameter in den meisten Fällen recht gut funktionieren und dass die Feinabstimmung der Hyperparameter eher bei der Leistungsvariabilität hilft (Leistungswerte wie RASE, R-Quadrat usw. haben beim abgestimmten Algorithmus engere Bereiche als beim „Standard“-Algorithmus) als bei der maximalen oder durchschnittlichen Algorithmusleistung.
Sie können hier einen ähnlichen Beitrag und eine Lösung zu diesem Thema lesen, um einen Blick auf Validierungstechniken und die Verwendung von Simulationen zu werfen: Gelöst: Re: Boosted Tree – Tuning TABLE DESIGN – JMP User Community
Die verschachtelte Kreuzvalidierung ist normalerweise nicht die erste Option, die ich empfehlen würde, da sie einen hohen Rechenaufwand erfordert, um den Algorithmus unabhängig von jeder Falte der inneren Schleife zu optimieren und dann die Leistung für jede Validierungsfalte der äußeren Schleife zu berechnen.
Die K-fach-Kreuzvalidierung ist eine nützliche Technik, wenn keine großen Datenmengen vorliegen, aber die verschachtelte Kreuzvalidierung erfordert dennoch einen ziemlich großen Aufwand, um die Datenaufteilung korrekt durchzuführen: Wenn Sie beispielsweise die innere Schleife in 4 Falten und die äußere Schleife in 5 Falten aufteilen, müssen Sie in Ihrem Datensatz 20 Falten/Gruppen erstellen!
Schließlich ist die Kreuzvalidierung eher eine Tuning- als eine Validierungstechnik zur Beurteilung der Modellrobustheit, wie Cassie Kozyrkov in diesem Video hervorragend beschreibt: https://youtu.be/zqD0lQy_w40?si=lja79_aik0KO-jbB
Hoffe, diese Antwort wird Ihnen helfen,
@shampton82 Vielen Dank, dadurch konnte ich die Spalte „k fold (val)“ erstellen und den geboosteten Baum ausführen!
Vielen Dank, @Victor_G ! Ich fand Ihre Erklärung sehr hilfreich, insbesondere für den nächsten Schritt beim Hypertuning. Ich konnte die Spalte „k fold val“ über xgboost erstellen und den geboosteten Baum ausführen, aber ich werde Anweisungen und Ressourcen benötigen, die für die nächsten Schritte hilfreich sind. Vielen Dank!