DatenlecksHallo
Ich habe mehrere Beiträge über Datenlecks zwischen der Test- und der Trainingsgruppe gelesen. Die häufigsten Vorschläge zur Vermeidung von Leckagen:
1 Teilen Sie die Datenbank in Trainings- und Test-Sets auf, bevor Sie normalisieren, standardisieren und fehlende Werte unterstellen
2 Vermeiden Sie bei Zeitreihen die zufällige Aufteilung. Legen Sie einen Zeitschnitt fest und trennen Sie den Trainings- und Testsatz damit.
Irgendwelche Kommentare, Vorschläge, nützliche Lesungen?
Felice
AnalytikBetreff: DatenverlustMeine 2 Cent:
Wenn Sie Zeitreihendaten haben, denke ich, dass Ihr Punkt 2 das größere Problem ist, es sei denn, Sie führen viel Interpolation durch.Berücksichtigen Sie Geräuschquellen in Ihren Daten, wenn diese über mehrere Zeilen hinweg auftreten oder wenn Zeilen vorher und nachher mit den Zeilen verknüpft sind (Überwachung des Tankfüllstands im Laufe der Zeit, wenn der Tank mehr als eine Zeile benötigt, um zu erreichen Wenn Sie beispielsweise einen neuen stationären Zustand festlegen, können Sie die Daten nicht zeilenweise aufteilen und erwarten, dass die Validierungs- oder Testsätze unabhängig vom Training sind.
Stattdessen können Sie die Daten in Tests und Validierungen in größere Blöcke aufteilen, z. B.:
- Identifizieren Sie neue Perioden, in denen der Prozess eine "signifikante" Änderung vornimmt, und halten Sie die Dauer von Steady-State-Läufen in derselben Gruppe (härter, aber besser) oder
- Verwenden Sie Zeiträume, die lang genug sind, damit Sie sicher sind, dass sie unterschiedliche Laufbedingungen darstellen, aber kurz genug, dass sie nicht aus mehr als einer Laufbedingung bestehen, und halten Sie alle Zeilen in diesem Zeitraum in derselben Validierungsgruppe (einfacher, möglicherweise immer noch demselben Risiko ausgesetzt) )
- Fassen Sie unter Verwendung der oben angegebenen Zeiträume jeden dieser Läufe in einer einzelnen Zeile zusammen, möglicherweise unter Verwendung von Durchschnittswerten oder Standardabweichungen von Variablen oder des Funktionsdaten-Explorers anderer. (Beste)
In beiden Fällen können Sie Übergangszeiten zwischen Gruppen ausschließen.
Meine persönliche Erfahrung: Seit Beginn mindestens einer dieser Methoden stellen Validierungs- und Testgruppenstatistiken viel vernünftigere Erwartungen an die Vorhersagekraft von Modellen dar.
Betreff: DatenverlustHier ist meine begrenzte Erfahrung.
Die Modellierung ist recht komplex (richtige Modellauswahl, Datenaufbereitung, Datenaufteilung, Metadatenoptimierung ...).
Ein gutes Robost-Modell ist unabhängig von Aufteilung, Metadaten, Modelltyp ...
Sowohl das Training als auch das Test-Set müssen repräsentativ für den Prozess sein, aber das Test-Set muss nicht so umfassend sein. Training / Test ist notwendig, um das Ergebnis zu beurteilen, wie @ich h schon erwähnt.
Für die Aufteilung kann die Schichtungsoption verwendet werden, um die Aufteilung zu steuern. Aber sowohl für das Modellieren als auch für das Aufteilen muss der Prozess wissen, wie er es am besten macht.
Bei komplexen Modellen und wenn das Ergebnis kritisch ist, habe ich versucht, verschiedene Modelle, verschiedene Metadaten und verschiedene Validierungsspalten zu testen. Wenn es keinen großen Unterschied gibt, gibt es kein Problem. Und das ist in JMP (Pro) ganz einfach.
Am Ende gibt nur dieser Test die Antwort, ob es keine Leckage gibt. Aber ehrlich gesagt hätte ich nichts gegen Leckagen, wenn ich sicher sein kann, ein gutes Modell zu haben.
Betreff: DatenverlustIch frage mich, ob wir zwei Dinge verwechseln: Leckage und Überanpassung.Ich denke, sie sind ganz anders.Überanpassung ist immer ein potenzielles Problem bei der prädiktiven Modellierung. Die übliche Methode, um dies zu verhindern, ist die Validierung. Wenn Sie über genügend Daten verfügen, auch einen separaten Testdatensatz.Nach meiner Erfahrung ist eine Überanpassung mit JMP weniger problematisch als sonst, da eine Reihe anderer Optimierungsparameter ebenfalls dazu beitragen, dies zu verhindern.Bei Entscheidungsbäumen hilft beispielsweise das Festlegen einer relativ hohen minimalen Teilungsgröße dabei, eine Überanpassung zu vermeiden.Dennoch ist es eine gute Idee, separate Testdaten zu haben, um zu bewerten, ob Ihr Modell in der Lage ist, realistische Vorhersagen für neue Daten zu erstellen.Ich denke, dies ist besonders wichtig für Zeitreihendaten.
Leckagen sind aus meiner Sicht ein ganz anderes Thema.Leckage ist ein falsch angegebenes Modell.Sie verwenden Faktoren, die nur gleichzeitig mit dem bekannt sind, was Sie vorhersagen möchten.Wenn Sie beispielsweise versuchen, die Kundenbindung vorherzusagen, und einer Ihrer Faktoren die diesjährigen Einkäufe sind, verfügen Sie nur über Daten für Kundenbindungen, die für diejenigen fehlen, die Sie nicht behalten.In diesem Fall wird der Faktor der diesjährigen Einkäufe die Kundenbindung perfekt vorhersagen, aber das ist kein nützliches Modell.Ich glaube, das ist Leckage.
Ich glaube nicht, dass Leckagen durch unterschiedliche Trainings- / Validierungs- / Testdatensätze verhindert oder erkannt werden.Sie können Leckagen in einem dieser 3 Bereiche feststellen: Ein perfektes Modell (oder fast) in den Trainingsdaten würde ausreichen, um zu vermuten, dass möglicherweise Leckagen vorliegen.Ich denke, die beste Verhinderung von Leckagen besteht darin, die Faktoren sorgfältig zu berücksichtigen und zu verstehen, wie und wann sie gemessen werden.Wenn ein Modell zu gut erscheint, um wahr zu sein, kann dies an einer Leckage liegen (oder es kann sich nur um ein sehr gutes Modell handeln).Aber ich denke nicht, dass es eine Frage ist, die von technischen Geräten beantwortet wird.
Ich bin interessiert zu hören, was andere dazu sagen.
Betreff: Datenverlustsehr geehrter @dale_lehman Ja, Sie haben Recht, ich habe es zumindest formal durcheinander gebracht, als ich über das Gesamtziel nachdachte, ein gutes und robustes Modell zu haben. Leckage vermeiden ist ein Ziel, nicht bereits Daten im Testsatz gesehen zu haben. Ich habe hier eine zusätzliche Erklärung gefunden:
Datenverlust beim maschinellen Lernen. So verhindern Sie Probleme, die die… | von Devin Soni:crown:| Auf dem Weg zur Datenwissenschaft
Aber wie geht das absichtlich, wenn wir Trainings- und Testsätze normalerweise zufällig aufteilen? Ich denke eher, dass in einer Prozessmodellkategorie sowohl das Training als auch das Test-Set aus demselben Prozess stammen. Wenn Sie über Prognosen nachdenken, kann dies anders sein.
Betreff: DatenverlustDer Artikel, auf den Sie verlinken, ist sehr verwirrt über Datenlecks.Es verwechselt die Idee der unterschiedlichen Leistung bei Trainings- und Validierungs- / Testdaten (die überanpasst) mit dem Fehlen einer klaren Grenze zwischen Trainings- und Testdaten (was eine Möglichkeit ist, an Leckagen zu denken).Ich glaube, die beiden Konzepte sind unterschiedlich.Wenn Ihr Modell zu den Trainingsdaten und nicht zu den Testdaten passt, ist dies ein Beispiel für eine Überanpassung.Leckagen würden das nicht erklären - wenn es Leckagen gibt, würden sie auch in den Trainingsdaten erscheinen.Wenn die Testdaten zufällig ausgewählt werden, sollte es außerdem zu Undichtigkeiten in den Trainingsdaten kommen, wenn sie in den Testdaten enthalten sind (und umgekehrt).Dies ergibt sich aus informativen Merkmalen in den Daten, die zur Vorhersage einer Antwort verwendet werden, die jedoch bei der Vorhersage nicht bekannt sein konnten.
Bei Zeitreihendaten sind die Dinge etwas weniger klar, da die Testdaten keine zufällige Auswahl des gesamten Datensatzes wären (es könnte sich um eine zufällige Zeit handeln Zeitraum ).Die meisten Zeitreihenmodelle verwenden vergangene Daten, um die Zukunft vorherzusagen. Ein Leck wäre, wenn Sie spätere Daten verwenden würden, um frühere Daten vorherzusagen.Eine Überanpassung würde einen Zeitraum verwenden, um eine Teilmenge des Zeitraums vorherzusagen, der zum Erstellen des Modells verwendet wird - dh die Zeiträume nicht getrennt zu halten.Selbst wenn in einem Zeitreihenmodell Überanpassung und Leckage vermieden werden, wird davon ausgegangen, dass der zum Erstellen des Modells verwendete Zeitraum dem Zeitraum, den Sie prognostizieren möchten, ausreichend ähnlich ist.Wenn die Perioden nicht ähnlich sind (z. B. wenn sich Kräfte ändern, die das Modell nicht mehr relevant machen), würde ich sagen, dass das Modell nicht sehr gut ist, aber ich würde diese Leckage nicht nennen und würde sie wahrscheinlich auch nicht als Überanpassung bezeichnen.
Betreff: DatenverlustHallo @ FR60 ,
Meine Gedanken zu den spezifischen Punkten, die Sie ansprechen:
1. Wenn Sie die Daten standardisieren und / oder normalisieren möchten, ist es meiner Meinung nach am besten, dies vor dem Aufteilen des Datensatzes zu tun. Bei der Imputation fehlender Werte sollten Sie vorsichtig sein. Manchmal sind fehlende Daten informativ und manchmal nicht. Außerdem ist die Art und Weise, in der JMP die Werte unterstellt, möglicherweise nicht für Ihre spezifischen Daten geeignet. Es könnte die fehlenden Daten falsch unterstellen und ein künstliches Verhalten in die Daten einführen, das das Modell falsch beeinflusst.
2. Wenn Sie für die Zeitreihen wirklich eine Zeitreihe verwenden, um zukünftige Ereignisse rechtzeitig vorherzusagen und vorherzusagen, würden Sie den Datensatz wahrscheinlich nicht aufteilen - zumindest nicht mit den Zeitreihenplattformen in JMP Auf diesen Plattformen gibt es keine Validierungsspalte. Wenn Sie jedoch einen unabhängigen Datensatz haben möchten, um verschiedene Prognosemodelle zu vergleichen, um festzustellen, welches am besten zu zukünftigen, nicht verwendeten Daten passt, dann würde ich den Datensatz irgendwann aufteilen und damit Prognosemodelle generieren und speichern diese Formeln in die Datentabelle und sehen, wie gut sie die nicht verwendeten Daten vorhersagen. Sie könnten vielleicht eine einfache Anpassung Y durch X verwenden und den R ^ 2-Wert betrachten, um zu sehen, welches Modell das Ergebnis am besten vorhersagt, oder die Residuen zwischen tatsächlichen und modellierten Daten betrachten, um zu sehen, welche die kleinste Summe von Residuen oder ähnliches haben .
Im Allgemeinen teile ich die Datentabelle 80/20 jedoch in Trainings- und Testdatensätze auf. Ich teile dann die Testdaten in eine völlig andere Datentabelle auf, damit die von mir erstellten Modelle keine Chance haben, die Testdaten zu verwenden. Dies ist mehr als nur das "Ausblenden" und "Ausschließen" von Daten und schließt die Möglichkeit aus, dass ein Algorithmus die Testdaten versehentlich verwendet. Mit der Datensatztabelle "Training" erstelle ich dann entweder eine Validierungsspalte oder verwende einfach die Validierungsabschnittoption einer Plattform und teile sie erneut 80/20 in Training / Validierung auf, um eine Überanpassung zu reduzieren. Nachdem ich mehrere verschiedene Modelle mit verschiedenen Plattformen generiert habe, verwende ich den Testdatensatz, um zu sehen, welches Modell die nicht verwendeten / unsichtbaren Daten am besten vorhersagt.
Hoffe das hilft,
DS
Betreff: DatenverlustIch fand dieses Tutorial in Kaggle sehr interessant.
Auch hier wird betont, dass keine Normalisierung und Imputation fehlender Werte auf Daten angewendet werden soll, bevor diese in Trainings- und Test-Sets aufgeteilt werden.
https://www.kaggle.com/alexisbcook/data-leakage
Ciao Felice