KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEWenn wir die Validierungsspaltenmethode für die Kreuzvalidierung verwenden, teilen wir den Datensatz in Trainings-, Validierungs- und Testsätze auf. Dieses Aufteilungsverhältnis wird vom Benutzer festgelegt. Gibt es eine Richtlinie/Referenz zur Festlegung des Aufteilungsverhältnisses (z. B. 60:20:20 / 70:15:15 / 50:25:25 / 80:10:10)? Wird es auch basierend auf der Gesamtzahl der Beobachtungen -N ausgewählt?
Datenmischung und -bereinigungPrädiktive Modellierung und maschinelles LernenBetreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEZu Ihrer ursprünglichen Frage: Nein, es gibt keine spezifischen Regeln dafür, wie viele Daten weggelassen werden sollten. In den Analysekursen von JMP Education empfehlen wir Ihnen, so viele Daten zurückzuhalten, wie Sie möchten, mindestens 20 %. Wenn Sie der Meinung sind, dass der Trainingssatz zu klein ist, um so viele Zeilen zurückzuhalten, ziehen Sie eine k-fache Kreuzvalidierung in Betracht. Wie viele Zeilen sind Sie bereit, für die Validierung zu opfern? Benutze k = n / so viele Zeilen. Wenn k < 5 unter Verwendung dieser Formel ist, sollten Sie eine einmalige Kreuzvalidierung in Betracht ziehen.
Betreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEGern geschehen @sreekumarp .
Wenn Sie eine oder mehrere dieser Antworten als Lösung(en) betrachten, zögern Sie nicht, sie als Lösung(en) zu markieren, um Besuchern der JMP-Community zu helfen, die gesuchten Antworten leichter zu finden.
Wenn Sie weitere Fragen haben oder einen konkreten Fall haben, zu dem Sie Rat wünschen, zögern Sie nicht, zu diesem Thema zu antworten oder ein neues zu erstellen.
Betreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEVielen Dank für Ihren Beitrag zur Kreuzvalidierungsspalte.
Sreekumar Punnappilly
Betreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEVielen Dank für Ihren ausführlichen Beitrag zur Aufteilung der Datensätze beim maschinellen Lernen. Ich bin sicher, dass dies bei meiner Recherche hilfreich sein wird.
Sreekumar Punnappilly
Betreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEHallo @Victor_G ,
Ja, ich glaube, es könnte ein Missverständnis vorliegen. Vielleicht sollte ich sagen, dass es sich eher um einen Hold-out-Datensatz als um einen Testdatensatz handelt. Der Hold-out-Datensatz besteht aus Daten, die nie zum Training, zur Validierung oder zur Auswahl eines Modells aus einem bestimmten Algorithmus (Testsatz) verwendet wurden. Ich verwende diesen Hold-out-Satz, um die verschiedenen Algorithmen miteinander zu vergleichen und herauszufinden, welcher Algorithmus die beste Leistung erbringt. Die Modellvergleichsplattform von JMP ist sehr hilfreich beim Vergleich der verschiedenen Algorithmen mithilfe eines Hold-out-Sets. Dies ermöglicht einen unvoreingenommenen und leckagefreien Vergleich der verschiedenen Algorithmen. Es handelt sich somit um eine Art „Test“-Datensatz in dem Sinne, dass der Hold-Out-Datensatz verwendet wird, um zu sehen, welcher der verschiedenen Algorithmen bei diesem „reinen“ Datensatz die beste Leistung erbringt.
Dies ist die einzige mir bekannte Möglichkeit, verschiedene Algorithmen in JMP miteinander zu vergleichen. Ich meine damit, dass JMP nur so einen neuronalen Netzalgorithmus beispielsweise mit einem XGBoost-Algorithmus vergleichen kann. Ich würde den Hold-out-Datensatz niemals zum Vergleich verschiedener Modelle innerhalb einer Plattform verwenden oder empfehlen. Ich würde die 20 verschiedenen abgestimmten Modelle innerhalb der Bootstrap-Forest-Plattform nicht mit dem Hold-out-Set miteinander vergleichen, das wäre der Zweck des Testdatensatzes.
Es tut mir also leid, falls es zu Missverständnissen/Verwirrungen gekommen ist. Ich werde versuchen, es von nun an als Hold-out-Set zu bezeichnen, um Verwechslungen mit dem Testset zu vermeiden.
Danke für die Diskussion!,
DS
Betreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEGuter Punkt zur geschichteten Stichprobe @SDF1 !
Es tut mir leid, wir verwenden nicht die gleiche Benennung oder es liegt ein Missverständnis vor.
Wenn Sie mehrere Modelle in den Testsatz aufnehmen, um sie zu vergleichen (und eines auszuwählen), ist das ein Problem und nicht der Zweck dieses Satzes, unabhängig von den verwendeten Plattformen oder Modellen. Der Vergleich von Modellen sollte anhand des Validierungssatzes erfolgen (um einen klaren und „reinen“ Testsatz ohne Informationslecks oder Verzerrungen zu erhalten), daher meine vorherige Antwort mit einigen Ressourcen zu diesem Thema.
In der JMP-Hilfe werden auch die Unterschiede zwischen den Sätzen hervorgehoben: „Der Testsatz überprüft die Vorhersagefähigkeit des Modells.“ nach ein Modell wurde ausgewählt.“ : https://www.jmp.com/support/help/en/17.1/index.shtml#page/jmp/overview-of-the-make-validation-column-platform.shtml#ww269465
Dies ist auch ein Grund dafür, wie wichtig es ist, die verschiedenen Sätze gut zu definieren und entweder sie oder die Methode festzulegen, um verschiedene Modelle auf demselben Validierungssatz (oder derselben Methode) ordnungsgemäß zu bewerten.
Betreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEHallo @Victor_G ,
Tut mir leid, wenn es nicht klar war, aber wir beziehen uns eigentlich auf dasselbe. Wenn ich zuvor Modelle erwähnt habe, spreche ich von der Generierung von Modellen mit demselben Test-/Validierungsaufbau, aber auch über verschiedene Plattformen in JMP. Ich erstelle Modelle nie mit Blick auf eine bestimmte Plattform, sondern erstelle und optimiere Modelle mithilfe der verschiedenen Plattformen (z. B. NN, BT, Bootstrap Forest, SVM, KNN und XGBoost) und der Kreuzvalidierung mit den Trainings- und Validierungssätzen. Nachdem ich die verschiedenen Modelle generiert habe, vergleiche ich dann ihre Vorhersagefähigkeit anhand des Holdout-(Test-)Datensatzes, eines Datensatzes, den keines der Modelle während seiner Trainings- und Validierungsschritte gesehen hat. Manchmal funktioniert das NN am besten und manchmal ist es XGBoost oder eine andere Plattform.
zuletzt @sreekumarp Eine Sache, die ich in meinem vorherigen Beitrag vergessen habe, ist, dass es wirklich hilfreich ist, Ihre Kreuzvalidierungsspalte anhand Ihrer Ausgabespalte zu stratifizieren – der Spalte, die Sie vorhersagen möchten. Dadurch bleibt eine ähnliche Verteilungsstruktur für Ihre Trainings-, Validierungs- und Testdatensätze erhalten. Manchmal ist dies nicht möglich, insbesondere bei stark unausgeglichenen Datensätzen, aber wenn möglich, empfehle ich es dringend. Andernfalls werden die Daten zufällig in jedem Datensatztyp platziert, was zu einer schlecht aufgeteilten Validierungsspalte führen kann, was häufig zu schlechten Modellen führen kann.
DS
Betreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEHallo @SDF1 ,
Eine kleine Korrektur an der großartigen Ergänzung, die Sie bereitgestellt haben: Der Validierungssatz ist der Satz, der für den Modellvergleich und die Modellauswahl verwendet wird, nicht der Testsatz (aber manchmal werden Test- und Validierungsnamen abwechselnd oder verwechselt verwendet).
Diese beiden Sets haben sehr unterschiedliche Zwecke:
- Der Testsatz ist der zurückgehaltene Teil der Daten, der nicht verwendet wird Vor Nachdem Sie ein Modell ausgewählt haben, um eine unvoreingenommene Schätzung der Modellverallgemeinerung und der Vorhersageleistung zu ermöglichen.
- Der Validierungssatz ist ein Teil der Daten, der zur Modellfeinabstimmung und zum Modellvergleich verwendet wird, um das beste Kandidatenmodell auszuwählen.
Eine Erklärung gibt es hier: maschinelles Lernen – Kann ich den Testdatensatz verwenden, um ein Modell auszuwählen? - Data Science Stack Exchange
Zwei Erklärungen für diesen Nutzungsunterschied:
- Praktischer Aspekt: Bei Data-Science-Wettbewerben haben Sie keinen Zugriff auf Testdatensätze. Um also den Algorithmus mit der besten Leistung zu erstellen und auszuwählen, müssen Sie Ihre Daten in Trainings- und Validierungssätze aufteilen und auf gute Leistungen „hoffen“ ( und Verallgemeinerung) auf dem unsichtbaren Testsatz.
- Theoretisch: Wenn Sie einen Testsatz zum Vergleichen von Modellen verwenden, kommt es tatsächlich zu einem Daten-/Informationsverlust, da Sie Ihre Ergebnisse mit dem Testsatz im Laufe der Zeit verbessern können, indem Sie den Algorithmus mit der besten Leistung für den Testsatz auswählen (und dann Verfeinern Sie es vielleicht weiter basierend auf der Leistung der Testdaten oder probieren Sie andere Modelle aus ...). Ihr Testsatz ist also nicht mehr unvoreingenommen, da die Auswahl des Algorithmus (und möglicherweise auch andere nach der Auswahl durchgeführte Aktionen) auf dieser Grundlage erfolgt.
Der Testsatz ist oft der letzte Schritt zwischen der Modellerstellung/-entwicklung und seinem Einsatz in der Produktion oder Veröffentlichung, daher muss die abschließende Bewertung so fair und unvoreingenommen wie möglich sein.
Einige Ressourcen zu den Sets: Trainings-, Test- und Validierungssätze (mlu-explain.github.io)
MFML 071 – Was ist der Unterschied zwischen Testen und Validieren? - Youtube
Ich hoffe, dass dies jegliche Verwirrung bei der Benennung und Verwendung der Sets vermeiden kann.
Betreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEHallo @sreekumarp ,
Zusätzlich zu was @Victor_G schrieb, ich würde Ihnen außerdem dringend empfehlen, Ihren Testdatensatz abzuspalten und daraus eine neue Datentabelle zu erstellen. Auf diese Weise können Sie Ihre Modelle beim Trainieren und Validieren in der Test-Holdout-Datentabelle vergleichen, um zu sehen, welches Modell die beste Leistung erbringt. Dies verringert die Wahrscheinlichkeit, dass der Testdatensatz versehentlich in den Trainings- oder Validierungssätzen verwendet wird.
Es gibt auch andere Möglichkeiten, simulierte Daten zum Trainieren Ihrer Modelle zu verwenden und die Modelle dann anhand der realen Daten zu testen. Ich verwende diesen Ansatz manchmal, wenn der ursprüngliche Datensatz klein ist und ich die Korrelationsstruktur der Eingaben beibehalten muss.
Viel Glück!,
DS
Betreff: KREUZVALIDIERUNG – VALIDIERUNGSSÄULENMETHODEHallo @sreekumarp ,
Interessante Frage, und ich fürchte, ich werde keine definitive Antwort auf Ihre Frage erhalten, da sie vom Datensatz, den zu berücksichtigenden Modelltypen und den Praktiken/Gewohnheiten des Analysten (oder der Person, die die Analyse durchführt) abhängt.
Zunächst ist es wichtig zu wissen, welchen Nutzen und Bedarf die einzelnen Sets haben:
- Trainingsset: Wird verwendet für das eigentliche Training des/der Modell(s),
- Validierungssatz: Wird zur Modelloptimierung (z. B. Hyperparameter-Feinabstimmung, Auswahl von Funktionen/Schwellenwerten usw.) und zur Modellauswahl verwendet.
- Testsatz: Wird zur Generalisierung und prädiktiven Leistungsbewertung des ausgewählten Modells anhand neuer/unsichtbarer Daten verwendet.
Abhängig von Ihren Zielen und der Größe Ihres Datensatzes gibt es mehrere Möglichkeiten/Methoden, Ihre Daten aufzuteilen:
- Trainings-/Validierungs-/Testsätze : Feste Sätze zum Trainieren, Optimieren und Bewerten der Modellleistung. Empfohlen für größere Datensätze.
- K-Falten-Kreuzvalidierung : Teilen Sie den Datensatz in K-Falten auf. Das Modell wird K-mal trainiert und jede Faltung wird K-1-mal zum Training und 1-mal zur Validierung verwendet. Es ermöglicht die Beurteilung der Modellrobustheit, da die Leistungen über alle Falten hinweg gleich sein sollten.
- Leave-One-Out-Kreuzvalidierung : Extremfall der K-fachen Kreuzvalidierung, wobei K = N (Anzahl der Beobachtungen). Es wird verwendet, wenn Sie über einen kleinen Datensatz verfügen und beurteilen möchten, ob Ihr Modell robust ist.
- Autovalidierung/selbstvalidierendes Ensemble-Modell: Anstatt einige Beobachtungen in verschiedene Sätze aufzuteilen, verknüpfen Sie jede Beobachtung mit einer Gewichtung für Training und Validierung (eine größere Gewichtung im Training führt zu einer geringeren Gewichtung in der Validierung, was bedeutet, dass diese Beobachtung hauptsächlich für das Training verwendet wird). und weniger zur Validierung), und wiederholen Sie dann diesen Vorgang, indem Sie das Gewicht variieren. Es wird für sehr kleine Datensätze und/oder Datensätze verwendet, bei denen Sie einige Beobachtungen nicht unabhängig auf verschiedene Sätze aufteilen können: Beispielsweise kann bei der Versuchsplanung der durchzuführende Versuchssatz auf einem Modell basieren, und wenn ja, auf Ihnen Einige Läufe können nicht unabhängig voneinander zwischen Training und Validierung aufgeteilt werden, da dies das Modell negativ beeinflusst. Die zum Schätzen der Parameter erforderlichen Läufe sind nicht verfügbar, wodurch die Leistung des Modells erheblich beeinträchtigt wird.
Alle diese Ansätze werden von JMP unterstützt: Starten Sie die Make Validation Column-Plattform (jmp.com)
Als Faustregel gilt häufig ein Verhältnis von 70/20/10.Sie können den Artikel lesen „ Optimales Verhältnis für die Datenaufteilung " Hier finden Sie weitere Informationen.Im Allgemeinen gilt: Je höher die Anzahl der Parameter im Modell, desto größer wird Ihr Trainingsdatensatz, da Sie mehr Daten benötigen, um jeden Parameter im Modell genau abzuschätzen. Daher ist auch die Komplexität/der Typ des Modells zu berücksichtigen beim Erstellen von Trainings-/Validierungs-/Testsätzen.
Wenn Sie einen genaueren Anwendungsfall haben, könnte dieser vielleicht hilfreicher und weniger allgemein sein, um Ihnen eine Orientierung zu geben?
Ich empfehle außerdem wärmstens die Playlist „Making Friends with Machine Learning“ von Cassie Kozyrkov, um mehr über das Training, die Validierung und das Testen von Modellen zu erfahren: Mit maschinellem Lernen Freunde finden – YouTube
Ich hoffe, diese erste Antwort wird Ihnen helfen,
Betreff: Kreuzvalidierung – Methode der ValidierungsspalteDanke.
Es gibt eigentlich zwei Punkte, die bei der K-fachen Kreuzvalidierung (CV) und der Leave-One-Out-Validierung (LOO) mit Hilfe der Routine-Regression in JMP Pro geklärt werden müssen.
Beide Methoden sind direkt im PLSR-Teil (Partial Least Squares Regression) verfügbar, jedoch herrscht Unklarheit darüber, wie die Metriken zu visualisieren sind, wenn Kreuzvalidierung (CV) und/oder lineare Optimierung (LOO) für eine einfache Regression angewendet werden. Beispielsweise analysiere ich Spektren, und PCR sowie PLSR sind routinemäßig Bestandteil dieses chemometrischen Prozesses.

Ich habe eine etwas merkwürdige Erfahrung gemacht. Nachdem ich jedoch eine 4-fache Validierungsspalte erstellt habe (siehe oben, 4 Faltungen über 72 Beobachtungen) und eine PCR durchgeführt habe (numerische Antwortvariable und Hauptkomponenten als Prädiktoren), erhalte ich die folgende Fehlermeldung:
Daher wird kein wirklicher Lebenslauf erstellt, richtig?
Der zweite Punkt: Wie erstellt man eine LOO-Validierung (eine Spalte?) für die PCR?
Könnten Sie mir bitte insgesamt erklären, was zu tun ist, um eine adäquate Kreuzvalidierung und Leave-One-Out-Validierung für eine typische Regression durchzuführen und aussagekräftige Gütekriterien zu erhalten? Das ist mir wirklich wichtig, aber noch nicht ganz klar.
Vielen Dank, Kollegen!
Betreff: Kreuzvalidierung – Methode der ValidierungsspalteHallo @Nazarkovsky ,
Es wäre wahrscheinlich einfacher gewesen, einen neuen Beitrag zu erstellen, anstatt auf diesen alten Beitrag zu antworten, da dies für mehr Sichtbarkeit gesorgt und anderen JMP-Benutzern ermöglicht hätte, sich an der Diskussion über Ihre Frage zu beteiligen.
Ja, bei der Verwendung einer festen K-Folds-Kreuzvalidierungsspalte in JMP-Modellierungsplattformen können gelegentlich Fehler auftreten, da JMP meist nur zwei (Trainings- und Validierungs- bzw. Testdaten) oder drei (Trainings-, Validierungs- und Testdaten) Stufen aus der Validierungsspalte erkennt. In Ihrer Fehlermeldung wird keine Kreuzvalidierung durchgeführt, sondern ein lineares Modell auf alle Ihre Daten angewendet.
Da Sie ein sehr einfaches lineares Modell verwenden, können Sie vielleicht die Model Screening Plattform nutzen (die auch PLS beinhaltet, wenn Sie die Ergebnisse der verschiedenen Modelle vergleichen möchten), indem Sie Ihre X-Variablen, Ihre Zielvariable Y, Ihre 4-fache Validierungsspalte (oder die Kreuzvalidierung direkt von der Plattform aus) und den Typ des Modells angeben, das Sie anpassen möchten (Optionen für lineare Regressionsmodelle + Modellierungsoptionen):

Oder Sie können diese Ergebnisse direkt mit der K-fachen Kreuzvalidierungsoption der Plattform erzielen:

Wenn Sie eine Leave-One-Out-Kreuzvalidierung durchführen möchten, geben Sie einfach K=n an (wobei n die Anzahl der Durchläufe in Ihrer Tabelle ist). Um auf die Ergebnisse einzelner Folds zuzugreifen, können Sie die hier bereitgestellte Lösung an Ihre Modellierungsplattform anpassen: Zugriff auf Out-of-Fold-Metriken für K-Fold-Kreuzvalidierung
Abschließend sehe ich mindestens ein gravierendes Problem in Ihrem Modellierungs-Workflow, das zu Datenlecks führen könnte: Sie müssen die Kreuzvalidierung oder Ihre Splitting-/Validierungsstrategie auch auf Ihre Hauptkomponentenanalyse (PCA) anwenden. Andernfalls analysiert die PCA den gesamten Datensatz und lernt die Korrelationen zwischen den Faktoren aus allen Daten. Das anschließend angepasste (und mithilfe der Kreuzvalidierung evaluierte) lineare Modell profitiert dann von allen Informationen des Datensatzes und nicht nur von den Informationen aus drei von vier Folds. Da JMP (noch!) keine Validierungsrolle für PCA implementiert hat, habe ich diesen Wunsch hinzugefügt, um Datenlecks und mögliche Fehler in Modellierungs-Workflows wie Ihrem zu vermeiden: Validierungsrollenoption in der PCA-Plattform hinzufügen. Zusammenfassend sollten Sie Folgendes beachten:
- Definieren und wenden Sie eine Validierungsstrategie an (CV, LOO oder Standard-Trainings-/Validierungsaufteilung oder Trainings-/Validierungs-/Testaufteilung).
- Die Daten sollten nur auf dem Trainingsdatensatz vorverarbeitet werden (oder die Daten je nach den verwendeten Faltungen mehrmals vorverarbeitet werden).
- Mit den vorverarbeiteten Daten aus dem Trainingsdatensatz (oder aus den entsprechenden Trainingsfolds) wird ein Modell unter Verwendung der gleichen Validierungsstrategie angepasst.
Ich hoffe, diese Antwort hilft Ihnen.
Betreff: Kreuzvalidierung – Methode der ValidierungsspalteDie Funktion zur k-fachen Kreuzvalidierung in JMP ist nach wie vor unzureichend. Es wundert mich, warum die Entwickler dies nicht berücksichtigen, da diese Validierungsmethode ein wichtiges Werkzeug zur ersten Bewertung von Modellen ist, insbesondere bei geringen Datenmengen. Darüber hinaus ist es bei den Optionen zum Erstellen einer Spalte für die k-fache Kreuzvalidierung nicht möglich, eine 3-fache Kreuzvalidierung durchzuführen – der Mindestwert beträgt 4.
Mir gefällt auch der Metrikbericht von JMP für CV nicht, da es keine abschließende Option/Schaltfläche gibt, um nach allen Durchläufen eine Spalte „Vorhergesagt“ als Durchschnittsergebnis zu erstellen und mit den von Generalized Regression oder PLSR gelieferten Vorhersagewerten zu vergleichen.
Zur Validierung der PCA findet sich diese Option in Unscrambler, einer gängigen Software für Chemometrie (multivariate Analyse chemischer Daten wie Spektren). Die Validierung erfolgt anhand der voreingestellten Anzahl an Komponenten im Verhältnis zur erklärten Varianz. Für diesen Leckagetest verwende ich Unscrambler, aha.
Es gibt hier in der Community eine Reihe von JMP-Beiträgen, die sich mit der Analyse von Spektren befassen, aber es fehlt noch an einer umfassenden Diskussion zu CV und PCR.
In der Chemometrie werden jedoch stets SVR (Support Vector Regression), PLSR und PCR angewendet und ihre Metriken verglichen.
Vielen Dank an LOO, es funktioniert wirklich einwandfrei.
Betreff: Kreuzvalidierung – Methode der ValidierungsspalteDie k-fache Kreuzvalidierung in JMP ist nach wie vor verbesserungsbedürftig. Es wundert mich, warum die Entwickler dies nicht beachten, da diese Validierungsmethode ein wichtiges Werkzeug zur ersten Bewertung von Modellen ist, insbesondere bei geringen Datenmengen. Darüber hinaus ist es bei der korrekten Erstellung einer Spalte für die k-fache Kreuzvalidierung nicht möglich, eine 3-fache Kreuzvalidierung durchzuführen – der Mindestwert beträgt 4.
Mir gefällt auch der Metrikbericht von JMP für CV nicht, da es keine abschließende Option/Schaltfläche gibt, um nach allen Durchläufen eine Spalte „Vorhergesagt“ als Durchschnittsergebnis zu erstellen und mit den von Generalized Regression oder PLSR gelieferten Vorhersagewerten zu vergleichen.
Zur Validierung der PCA findet sich diese Option in Unscrambler, einer gängigen Software für Chemometrie (multivariate Analyse chemischer Daten wie Spektren). Die Validierung erfolgt anhand der Anzahl der Komponenten im Verhältnis zur erklärten Varianz. Für diesen Leckagetest verwende ich Unscrambler, aha.
Es gibt hier in der Community eine Reihe von JMP-Beiträgen, die sich mit der Analyse von Spektren befassen, aber es fehlt noch an einer umfassenden Diskussion zu CV und PCR.
In der Chemometrie werden jedoch stets SVR (Support Vector Regression), PLSR und PCR angewendet und ihre Metriken verglichen.
Vielen Dank an LOO, es funktioniert wirklich einwandfrei.