Betreff: Weisen Sie der Zeile eine Kategorie zu, wobei die Gesamtwahrscheinlichkeit feststehtIch würde diese Formel ausprobieren.
p = Random Uniform();
If( p <= 0.5, 0, p <= 0.8, 1, 2 );
Ich habe zu 50% trainiert, zu 30% validiert und zu 20% getestet.
Betreff: Weisen Sie der Zeile eine Kategorie zu, wobei die Gesamtwahrscheinlichkeit feststehtHallo @markbailey ,
Danke für den Vorschlag. Dies funktioniert, ich habe es jedoch leicht modifiziert, da ich kein festes Verhältnis von Zug, Validierung und Test haben möchte, sondern dies jedes Bootstrap-Simulationsprogramm modifizieren möchte, um zu sehen, ob es ein optimales Verhältnis von Zug / Validierung / Test gibt, da Die Auswahl in einer Validierungsspalte kann sich auf die Modellanpassung auswirken. Eine einfache Aufteilung von 0,6, 0,2, 0,2 ist möglicherweise nicht optimal. Vielleicht sollte es zum Beispiel 0,72, 0,15, 0,13 sein.
p = Random Uniform();
If( p <= Random Uniform(x1,x2), 0,<BR /> p <= Random Uniform(X3,x4), 1,<BR /> p <= Random Uniform(x5,x6), 2 );
Das Anpassen von x1, x2, x3, x4, x5 und x6 kann zu einer Reihe unterschiedlicher Verhältnisse von Zug / Validierung / Test in der Formelspalte führen.
Vielen Dank!,
DS
Betreff: Weisen Sie der Zeile eine Kategorie zu, wobei die Gesamtwahrscheinlichkeit feststehtSie sollten jeweils nur eine Zufallsvariable verwenden. Es ist nicht erforderlich, Random Uniform () mehrmals aufzurufen, bevor die If () - Funktion aufgerufen wird. Verwenden Sie Ihre Variablen für die Booleschen Ausdrücke.
p = Random Uniform();
If( p <= x1, 0, p <= x2, 1, 2 );
Ordnen Sie der Zeile eine Kategorie zu, bei der die Gesamtwahrscheinlichkeit festgelegt istLiebe JMP Community,
(WE10, 64-Bit, JMP Pro 4.1.0)
Ich versuche, eine Spaltenformel zu generieren, die eine Aktion ausführt, die der Aktion "Validierungsspalte erstellen" ähnelt, indem der Zeile entweder 0, 1 oder 2 zugewiesen wird. Ich versuche die Random Category-Funktion, um dies zu tun, und sie funktioniert, aber nicht so, wie ich es möchte. Es weist den Zeilen entweder 0, 1 oder 2 zu, aber wenn Sie die Häufigkeit jeder Kategorie addieren, erhalten Sie einen Wert größer als 1, was ich nicht möchte.
In "Validierungsspalte erstellen" können Sie einen bestimmten Prozentsatz Ihrer Datentabelle als "Zug", "Validieren" oder "Test" (0, 1, 2) zuweisen. Die Summe dieser Brüche addiert sich immer zu 1. Ich möchte dies mit einer Funktion wie Random Category tun, so dass der Bruchteil von "0", "1" und "2" zu 1 addiert wird. Der Einfachheit halber möchte ich die Anzahl der "1" gleich der Anzahl der "2" halten, dh die Anzahl der Validierungs- und Testdaten ist gleich und summiert sich zu 1 - Anzahl der Trainingsdatenzeilen.
Der Grund dafür ist, dass ich die Optimierung eines Modells testen möchte, indem ich die Anzahl der Zug-, Validierungs- und Testdatensätze ändere, um die RMSE zu minimieren. Klicken Sie dazu mit der rechten Maustaste auf die gewünschte Statistik und wählen Sie dann "Simulieren" aus. Dadurch wird ein Bootstrapping ausgeführt und das Modell erneut ausgeführt, um zu bewerten, wie sich die Statistik ändert. ABER Sie müssen eine Funktion haben, um die Anzahl der Zeilen in jedem der Validierungsdatensätze auszutauschen.
Jedes Mal, wenn eine Simulation ausgeführt wird, wird eine neue Validierungsspalte "generiert", jedoch mit einem anderen Verhältnis der Zeilen "train", "validate" und "test". Die Ausgabe könnte dann verwendet werden, um das optimale Verhältnis der drei zu finden, um ein Modell mit besserer Leistung zu erhalten.
Alle Gedanken / Rückmeldungen zu diesem Thema werden sehr geschätzt.
Vielen Dank!,
DS
Betreff: Weisen Sie der Zeile eine Kategorie zu, wobei die Gesamtwahrscheinlichkeit feststehtDas Schema ist solide. Bei größeren Samples ist die Leistung jedoch besser. Hier ist vielleicht eine bessere Version. (Normalerweise verwende ich keine Formeln.)
Names Default to Here( 1 );
n = 500;
dt = New Table( "Again and Again",
Add Rows( n ),
New Column( "Y", "Numeric", "Continuous", Values( J( n, 1, Random Normal() ) ) ),
New Column( "X1", "Numeric", "Continuous", Values( J( n, 1, Random Normal() ) ) ),
New Column( "X2", "Numeric", "Continuous", Values( J( n, 1, Random Normal() ) ) ),
New Column( "Validation", "Numeric", "Nominal" )
);
training proportion = 0.6;
valid threshold = 1 - ((1 - training proportion) / 2);
:Validation << Set Values(
J( n, 1, p = Random Uniform(); If( p <= training proportion, 0, p <= valid threshold, 1, 2 ) );
);
Gibt es einen Grund, warum Sie einen so großen Anteil zum Testen anbieten würden?
Betreff: Weisen Sie der Zeile eine Kategorie zu, wobei die Gesamtwahrscheinlichkeit feststehtHallo @markbailey ,
Wenn ich die modifizierte Version verwende, erhalte ich einen größeren Bereich von Verhältnissen als wenn ich die komprimierte Form verwende.
Umgekehrt kann ich ein breiteres Spektrum für die Prüfung Trainingssatz (ca. 65% -78%) mit den anderen entsprechend verteilt - ca. 50/50 Validierung / Test. Das ist wirklich was ich will: Ändere den Prozentsatz der Prüfung Training zwischen einem niedrigen und einem oberen Wert einstellen und dann den Rest 50/50 aufteilen: Validierung / Test.
Vielen Dank!,
DS
Betreff: Weisen Sie der Zeile eine Kategorie zu, wobei die Gesamtwahrscheinlichkeit feststehtNochmals vielen Dank für Ihre Vorschläge! Ich hatte einen Tippfehler in meiner vorherigen Antwort und habe ihn bearbeitet. Der größere Teil sollte für das Trainingsset sein, nicht für das Testset.